2016-03-21 25 views
1

Geçerli bilgisayarın adını bilmem gerekiyor.InetAddress.getLocalHost() ile yanlış davranış. GetHostName() in Java 8

basit yöntem çalışan tarafından:

Linux makinesinde OpenJDK 7 ile
java.net.InetAddress.getLocalHost().getHostName() 

sistemi komutu hostname tarafından rapor edildiği gibi, sonuç doğrudur.

Ancak OpenJDK 8 ile, döndürülen ad localhost olup, bu da yararsızdır.

Neden farklı davranış? Gerçek adı Java 8 ile nasıl edinebilirim?

İlgili sorular:

cevap

-1

Benim /etc/hosts dosya şu şekildedir: o zaman

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 myserver 

:

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

Bu deitirirseniz: o zaman

127.0.0.1   myserver localhost localhost.localdomain localhost4 localhost4.localdomain4 

:

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

Java 8 her zaman doğru sonuç döndürür Java 7, daha sıralamaya daha duyarlıdır.

UPDATE: Daha fazla araştırma, CentOS 6 ile bu davranışın şu olduğunu gösterdi: Java 8 siparişe bağlı. CentOS 7'de, Java 8, Java 7 gibi çalışır.

+1

Sorunuz giderildi mi? Görünüşe göre basitçe ana dosya içeriğini ekliyorsunuz. Bu sorunun bir parçası olmamalı mıydı? –

+0

@Am_I_Yardımcı, çözüldü. Bu, Java 8'deki bir hata için bir çözümdür. –

+0

@ david.perez Aslında Java 8'de bir hata var mı, yoksa bunun bir hata olduğuna karar verdiniz mi? – Kayaman

0

getHostName() yerine getCanonicalHostName() kullanmayı deneyin!

+0

Benim durumumda, getCanonicalHostName() ', getHostName()' den aynı sonucu verir. –