dnsjava 无法解析 Linux 机器上的"localhost"



在我将dnsjava注册为默认Java DNS提供程序后,我遇到了一个问题。它不能解析我的Linux机器上/etc/hosts文件中描述的本地地址。这个文件看起来像这样:

127.0.0.1   localhost
127.0.1.1   servername

所以如果我试图解析这样的一个名字,就会发生UnknownHostException:

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的查询。

相关内容

  • 没有找到相关文章

最新更新