我实际上是在尝试在 IBMi 上运行 OrientDB(应用了 iSeries、AS/400、V540、JDK6-32 位最后的 CUM PTF)。 OrientDB 早期所做的事情之一(可以这么说)是尝试找到至少一个 mac 地址(不完全确定为什么我现在纯粹在本地嵌入式模式下使用它)。我做了自己的测试方法,结果相同:
LogIt.log(Level.INFO,"About to list mac addresses.");
final Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
final byte[] mac = networkInterface.getHardwareAddress();
if (mac == null) {
LogIt.log(Level.INFO,"Mac address is null.");
continue;
} // if
String hex = Utils.convertBytesToHexString(mac);
LogIt.log(Level.INFO,"Mac address found {0}.",hex);
} // while
系统输出显示一条消息:
getkerninfo 1: A system call received a parameter that is not valid.
并且它无法使用调用 getHardwareAddress() 检索任何 mac 地址(实际上它返回 null 3 次)。我以“程序员”类型的用户和安全人员(如“root”)的身份运行它,结果相同。它在我的 Ubuntu 12.04 PC 和笔记本电脑上运行良好。
我想知道是否有其他人遇到过这个问题并找到了解决方案。
最佳答案
由于 getkerninfo() 是 Unix/Linux 上通常未记录的 C 系统调用,您是否在 iSeries 上的 PASE 中运行它?我首先怀疑这是唯一可能取得成功的环境。否则,似乎需要一个 Linux 分区。
关于java - getHardwareAddress 不适用于 IBMi (iSeries) reqd for OrientDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15119061/