NetworkInterface.getNetworkInterfaces()无法在JDK 1.7 OS X上运行?

时间:2012-12-12 02:00:04

标签: java

运行以下代码,我得到了SocketException

import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Collections;
import java.util.Enumeration;

public class interfaces {
    public static void main(String[] args) throws SocketException {
        Enumeration<NetworkInterface> inters = NetworkInterface.getNetworkInterfaces();
        for (NetworkInterface iface : Collections.list(inters)) {
            System.out.println(iface.getDisplayName());
        }
    }
}

我正在使用OS X 10.8.2和JDK 1.7.0_09-b05。

在使用THIS JDK VERSION的Windows上运行良好,在使用JDK 1.6的OS X上运行良好。 任何人都可以帮我测试一下并检查它是否是JDK的错误?

这是堆栈跟踪:

Exception in thread "main"
java.net.SocketException: Can't assign requested address
    at java.net.NetworkInterface.getAll(Native Method)
    at java.net.NetworkInterface.getNetworkInterfaces(NetworkInterface.java:334)

1 个答案:

答案 0 :(得分:0)

我有类似的问题是由java.net.NetworkInterface.getDefault()返回的ipv6地址引起的。我在Macbook上并使用无线 - p2p0(用于AirDrop)作为默认值返回,但在运行ether时,我只有一个ipv6 ipconfig条目(无inet

两种解决方案,两者都适用于我(我更喜欢第一种)

  1. 使用-Djava.net.preferIPv4Stack=true启动JVM。这导致java.net.NetworkInterface.getDefault()返回我的vboxnet0网络接口 - 如果您没有运行仅限主机的VM,则不确定会得到什么。
  2. 关闭无线并使用有线连接