在我将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