gpt4 book ai didi

java - InetAddress.getLocalHost() 抛出 UnknownHostException

转载 作者:IT老高 更新时间:2023-10-28 11:45:50 24 4
gpt4 key购买 nike

我正在不同操作系统上测试我们的服务器应用程序(编写的 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 有什么我不知道的特别之处吗?

感谢任何提示,谢谢。

最佳答案

按照良好的传统,我可以再次回答我自己的问题:

看来InetAddress.getLocalHost()忽略 /etc/resolv.conf , 但只查看 /etc/hosts文件(除了 localhost 之外我没有指定任何内容)。将 IP 和主机名添加到此文件中即可解决问题,并且异常消失了。


另一个答案几乎是正确的,我从上面得到了提示,我的问题得到了解决......谢谢。

但为了改进这一点,我正在逐步添加更改,这样即使是天真的用户也会有所帮助。

步骤:

  • 打开 /etc/hosts ,条目可能如下所示。

     127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  • 你需要用任何编辑器在上面再添加一行,比如 vigedit (例如 <your-machine-ip> <your-machine-name> localhost )。

     192.168.1.73 my_foo localhost

现在,整个文件可能如下所示:

192.168.1.73 my_foo localhost
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  • 只需保存并再次运行您的 Java 代码...您的工作就完成了。

关于java - InetAddress.getLocalHost() 抛出 UnknownHostException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1881546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com