2016-07-27 30 views
3

InetAddress.getLocalHost().getHostName()與jdk1.8沒有更多獲取主機名的名字,因爲我切換到Java 8 ...InetAddress類的java 8沒有得到主機名

InetAddress.getLocalHost().getHostName()返回「localhost」。前(當我使用JDK1.6)它給了我正確的主機名(這是「ACTION03」)根據網絡配置:

cat /etc/sysconfig/network 
NETWORKING=yes 
HOSTNAME=ACTION03 

任何幫助嗎?

+0

是什麼'hostname'給你提供的名字記錄? – Robert

+0

@Robert它給了我ACTION03 – taboubim

+0

在編輯之前,您的主機文件中有兩個用於localhost的主機條目。不知道這是否與它有關。也許沒有一對一的映射,它給本地主機?需要測試它。不確定正確的行爲,但它適用於我。 – ManoDestra

回答

0

適用於Linux(Ubuntu 14.04)和Java 1.8.0_05。

public class HostName { 
    public static void main(String[] args) throws Exception { 
     System.out.println(java.net.InetAddress.getLocalHost().getHostName()); 
    } 
} 

羅伯特@哈瓦那:〜$ javac的HostName.java & & java的主機名

哈瓦那

+0

我我有Centos 7!它給我本地主機! – taboubim

1

similar bug在JDK解僱。

我的理解是他們改變了默認的解析過程。

他們遵守​​中的配置,其中主機配置爲/etc/hosts,這使主機優先處理名稱解析。

通常/etc/hosts127.0.0.1 localhost,對於主機localhost

+0

你讓我的一天! – mulya