3 回答

TA贡献1789条经验 获得超8个赞
按照传统,我可以再次回答自己的问题:
似乎InetAddress.getLocalHost()忽略了/etc/resolv.conf,但只查看了/ etc / hosts文件(除了本地主机,我没有指定任何其他文件)。将IP和主机名添加到此文件即可解决该问题,并且该异常消失了。
上面的答案几乎是正确的,我从上面得到了提示,我的问题得到了解决...谢谢。
但是为了改善这一点,我将逐步进行更改,这样即使对于天真的用户也将有所帮助。
脚步:
打开/ etc / hosts,条目可能如下所示。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
您需要通过vi或gedit之类的任何编辑器在其上方添加一行。 <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 ...代码,即可完成工作。

TA贡献1816条经验 获得超4个赞
我NetworkInterface.getNetworkInterfaces()用作回退的InetAddress.getLocalHost()时机UnknownHostException。这是代码(为了清楚起见,没有异常处理)。
Enumeration<NetworkInterface> iterNetwork;
Enumeration<InetAddress> iterAddress;
NetworkInterface network;
InetAddress address;
iterNetwork = NetworkInterface.getNetworkInterfaces();
while (iterNetwork.hasMoreElements())
{
network = iterNetwork.nextElement();
if (!network.isUp())
continue;
if (network.isLoopback()) // If I want loopback, I would use "localhost" or "127.0.0.1".
continue;
iterAddress = network.getInetAddresses();
while (iterAddress.hasMoreElements())
{
address = iterAddress.nextElement();
if (address.isAnyLocalAddress())
continue;
if (address.isLoopbackAddress())
continue;
if (address.isMulticastAddress())
continue;
return(address.getHostAddress());
}
}

TA贡献1942条经验 获得超3个赞
Solaris上的主机查找使用的方式/etc/nsswitch.conf取决于“ hosts:”行所说的内容,它确定是否应查询/etc/hostsNIS,DNS和/或LDAP。
如果仅使用主机和DNS,则应该在以下位置使用它/etc/nsswitch.conf:
主机:文件dns
nslookup desvearth01起作用的原因是因为nslookup命令直接参考/etc/resolv.conf。如果要进行更好的命令行测试,请使用以下命令:
getent主机desvearth01
添加回答
举报