2016-03-21 26 views
1

我需要知道當前計算機的名稱。Java 8中InetAddress.getLocalHost()。getHostName()的不良行爲

最簡單的方法是通過運行:

java.net.InetAddress.getLocalHost().getHostName() 

隨着OpenJDK 7的在Linux機器,其結果是正確的,因爲由系統命令hostname報道。

但是用OpenJDK 8,返回的名字是localhost,這是沒用的。

爲什麼不同的行爲? 如何獲得Java 8的真名?

相關問題:

回答

-1

/etc/hosts文件是這樣的:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 myserver 

則:

InetAddress.getLocalHost().getHostName().equals("localhost") 

如果我把它改成這樣:

127.0.0.1   myserver localhost localhost.localdomain localhost4 localhost4.localdomain4 

則:

InetAddress.getLocalHost().getHostName().equals("myserver") 

的Java 8是訂貨比Java 7,這總是返回正確的結果更加敏感。

更新:進一步的調查顯示,使用CentOS 6時,這是行爲:Java 8依賴於排序。在CentOS 7中,Java 8像Java 7一樣工作。

+1

您的查詢已解決?看來你只是添加主機文件的內容。這不應該成爲問題的一部分嗎? –

+0

@Am_I_Helpful,它已被解決。這是Java 8中一個錯誤的解決方法。 –

+0

@ david.perez在Java 8中是否存在實際的錯誤,或者您是否確定這是一個錯誤? – Kayaman

0

嘗試使用getCanonicalHostName()而不是getHostName()

+0

在我的情況下,'getCanonicalHostName()'提供的結果與'getHostName()'相同 –

相關問題