0

在我将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 会在默认库中导致大量错误,结果证明这些错误高度依赖于 localhost 解析能力。所以,问题是:如何改变 dnsjava 的行为来解析本地主机名?

编辑。下一个代码工作正常:

java.net.InetAddress.getByName("localhost");

但是java.net.InetAddress.getLocalHost()方法抛出:

java.net.UnknownHostException: servername
4

1 回答 1

1

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.

于 2013-05-27T15:02:14.820 回答