2016-03-21 2 views
1

現在のコンピュータの名前を知る必要があります。最も簡単な方法は、実行しているJavaのInetAddress.getLocalHost()。getHostName()での動作が不正8

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、より秩序に敏感です。

UPDATE:さらに調査したところ、CentOS 6の場合、これは動作です。Java 8はオーダーに依存しています。 CentOS 7では、Java 8はJava 7のように機能します。

+1

あなたの質問は解決されましたか?単にホストファイルの内容を追加しているようです。これは質問の一部ではありませんか? –

+0

@Am_I_役立って、解決されました。これはJava 8のバグを回避する方法です。 –

+0

@ david.perez Java 8には実際にバグがありますか、それともバグかどうか判断しましたか? – Kayaman

0

getHostName()ではなくgetCanonicalHostName()を使用してみてください!

+0

私の場合、 'getCanonicalHostName()'は 'getHostName()'と同じ結果を返します。 –

関連する問題