【发布时间】:2013-11-20 18:39:47
【问题描述】:
它对我来说没问题,但在 OSX Mavericks 上,特定客户的 InetAddress.getLocalHost() 在 Java 7 上失败,尽管它在 Java 6 上工作正常,但有以下异常
java.net.UnknownHostException: rupert: rupert: nodename nor servname provided, or not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1466)
Caused by: java.net.UnknownHostException: rupert: nodename nor servname provided, or not known
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:894)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1286)
at java.net.InetAddress.getLocalHost(InetAddress.java:1462)
这是设计的吗?
更新
看起来是 Java 8 中修复的一个已知错误
【问题讨论】:
-
我会说这是环境问题。他们的主机名正在 DNS 中查找,但未找到。它确实在 Java 6 VM 中工作,但显然 Java 7 的查找机制已经改变。如果我使用
sudo hostname rupert更改我的主机名,然后运行一些简单的测试代码,我会得到同样的错误。 -
+1 表示这是 Java 中的一个已知错误,已在 1.8 中修复。我可以确认在我的 Mac OS X 10.10 (Yosemite) 环境中的 Oracle Java 1.7.0_72(撰写本文时最新)下运行此程序失败并报告异常,但正如预期在 Oracle Java 1.8.0_25(撰写本文时最新)下)。在我升级之前,我相信它在 Mac OS X 10.9 (Mavericks) 下可以正常工作。我怀疑升级调整了一些非常特别的网络配置,因为原始报告提到小牛而不是优胜美地。
-
是否希望将修复程序向后移植到需要 JDK 7 而不是 8 的用户?我在报告的错误中没有看到这一点
-
从该错误报告看来,它也在 7u85 中得到修复,但似乎它们仅在 7u79 之前公开发布
。
标签: java macos java-7 osx-mavericks