为什么InetAddress.getLocalHost()的这种用法适用于Java 6但在OSX上使用Java 7失败

Pau*_*lor 8 java macos java-7 osx-mavericks

它适用于我,但在特定客户的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)
Run Code Online (Sandbox Code Playgroud)

这是设计的吗?

更新

看起来是Java 8中修复的已知错误

https://bugs.openjdk.java.net/browse/JDK-7180​​557

小智 7

将{yourhostname}部分添加到 /etc/hosts

例如

127.0.0.1       localhost {yourhostname}
Run Code Online (Sandbox Code Playgroud)

问题就消失了.

  • 您可以通过在终端中输入命令`hostname`并查看它返回的内容来获取您的主机名. (3认同)

Rob*_*een 4

我猜您会在这里找到答案- 尽管这个问题是关于 Solaris 的,但 Mac OS X 和 Solaris 都是 Unix 操作系统。