我正在不同的操作系统上测试我们的服务器应用程序(编写的 Java),并认为 OpenSolaris (2008.11) 由于良好的 Java 集成,将是最不麻烦的。结果我错了,因为我得到了一个 UnknownHostException
try {
computerName = InetAddress.getLocalHost().getHostName();
if (computerName.indexOf(".") > -1)
computerName = computerName.substring(0,
computerName.indexOf(".")).toUpperCase();
} catch (UnknownHostException e) {
e.printStackTrace();
}
输出是:
java.net.UnknownHostException: desvearth01: desvearth01
at java.net.InetAddress.getLocalHost(InetAddress.java:1353)
然而, nslookup desvearth01
返回正确的IP地址, nslookup localhost
返回 127.0.0.1
预期。此外,相同的代码在 FreeBSD 上也能完美运行。 OpenSolaris 有什么我不知道的特别之处吗?
任何提示表示赞赏,谢谢。
原文由 jhwist 发布,翻译遵循 CC BY-SA 4.0 许可协议
按照良好的传统,我可以再次回答我自己的问题:
It seems that
InetAddress.getLocalHost()
ignores the/etc/resolv.conf
, but only looks at the/etc/hosts
file (where I hadn’t specified anything besideslocalhost
) .将 IP 和主机名添加到此文件可解决问题,异常消失。另一个答案几乎是正确的,我从上面得到了提示,我的问题得到了解决……谢谢。
但为了改善这一点,我正在添加逐步更改,这样即使是天真的用户也会有所帮助。
脚步:
/etc/hosts
,条目可能如下所示。vi
或gedit
(例如<your-machine-ip> <your-machine-name> localhost
)。现在,整个文件可能如下所示: