2013-05-27 23 views
0

我註冊dnsjava as default Java DNS provider後出現問題。它無法解析我的Linux機器上/ etc/hosts文件中描述的本地地址。這個文件看起來像這樣:dnsjava無法解析Linux機器上的「localhost」

127.0.0.1 localhost 
127.0.1.1 servername 

所以,如果我嘗試解決這些名字的UnknownHostException情況之一:

org.xbill.DNS.Address.getByName("localhost"); 
org.xbill.DNS.Address.getByName("servername"); 

當你使用默認的DNS提供商一起使用dnsjava這不是一個問題。作爲唯一的提供者,dnsjava會在默認庫中導致大量錯誤,而這些錯誤最終取決於本地主機的解析能力。所以,問題是:如何改變dnsjava的行爲來解析本地主機名?

編輯。接着代碼工作正常:

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

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

java.net.UnknownHostException: servername 

回答

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

+0

感謝您的鏈接!它一切聽起來都很正常。但是在我的情況下,'java.net.InetAddress.getLocalHost()'方法試圖返回'servername'作爲本地主機名。因爲DNS服務器不知道這樣的主機名我得到UHE。問題是太多的庫想知道本地主機名。我無法更改庫和DNS服務器的行爲,所以我應該在dnsjava中更改它。 – artspb

+1

注意:此答案中的URL不再有效(感謝Nabble),但它可在Wayback機器上找到,網址爲https://web.archive.org/web/20111220074414/http://old.nabble.com/DNS-解決 - 從 - 主機文件先當時的DNS-服務器td15431381.html – Drizzt321