在我注册之后,我遇到了一个问题。它无法解析Linux计算机上/etc/hosts文件中描述的本地地址。这个文件看起来像这样:
127.0.0.1 localhost
127.0.1.1 servername
因此,如果我试图解决其中一个未知的名称,就会发生hostexception:
org.xbill.DNS.Address.getByName("localhost");
org.xbill.DNS.Address.getByName("servername");
当使用dnsjava和默认dns提供程序时,这不是问题。作为唯一的提供者,dnsjava在默认库中会导致许多错误,这些错误最终会高度依赖于本地主机解析功能。所以,问题是:如何改变dnsjava的行为来解析本地主机名?
编辑下一个代码工作正常:
java.net.InetAddress.getByName("localhost");
但是java.net.InetAddress.getLocalHost()方法抛出:
java.net.UnknownHostException: servername
最佳答案
dnsjava
是一个DNS客户端库;它与DNS服务器通信。/etc/hosts
不是DNS协议的一部分,dnsjava
也不了解它。
在dnsjava用户的邮件列表中可以看到这篇文章,作者是:http://old.nabble.com/DNS-Resolve-from-hosts-file-first-then-DNS-Server-td15431381.html
在这方面没有任何变化。
如果java.net.InetAddress.getByName()
正在工作,则您的DNS服务器配置为响应localhost
的查询。