Saya menguji aplikasi server kami (Java tertulis) pada sistem operasi yang berbeda dan berpikir bahwa OpenSolaris (2008.11) akan menjadi yang paling tidak merepotkan karena integrasi Java yang bagus. Ternyata saya salah, karena saya berakhir dengan UnknownHostException
try {
computerName = InetAddress.getLocalHost().getHostName();
if (computerName.indexOf(".") > -1)
computerName = computerName.substring(0,
computerName.indexOf(".")).toUpperCase();
} catch (UnknownHostException e) {
e.printStackTrace();
}
Outputnya adalah:
java.net.UnknownHostException: desvearth01: desvearth01
at java.net.InetAddress.getLocalHost(InetAddress.java:1353)
Namun, nslookup desvearth01
mengembalikan alamat IP yang benar, dan nslookup localhost
mengembalikan 127.0.0.1
seperti yang diharapkan. Selain itu, kode yang sama berfungsi dengan sempurna di FreeBSD. Apakah ada sesuatu yang istimewa pada OpenSolaris yang tidak saya sadari?
Setiap petunjuk dihargai, terima kasih.
sumber
127.0.0.1 localhost <hostname>
sudah cukup bagi sayahostname
perintah dari terminal.Saya gunakan
NetworkInterface.getNetworkInterfaces()
sebagai penyangga saatInetAddress.getLocalHost()
melemparUnknownHostException
. Berikut kodenya (tanpa kecuali penanganan untuk kejelasan).Enumeration<NetworkInterface> iterNetwork; Enumeration<InetAddress> iterAddress; NetworkInterface network; InetAddress address; iterNetwork = NetworkInterface.getNetworkInterfaces(); while (iterNetwork.hasMoreElements()) { network = iterNetwork.nextElement(); if (!network.isUp()) continue; if (network.isLoopback()) continue; iterAddress = network.getInetAddresses(); while (iterAddress.hasMoreElements()) { address = iterAddress.nextElement(); if (address.isAnyLocalAddress()) continue; if (address.isLoopbackAddress()) continue; if (address.isMulticastAddress()) continue; return address.getHostAddress(); } }
Jawaban lain mengedit
/etc/hosts
file. Ini rawan kesalahan, rapuh, mungkin memerlukan akses root dan tidak akan berfungsi di semua OS.sumber
Pada contoh amazon saya, saya mengalami masalah yang sama, ada masalah konfigurasi DNS default. Jadi untuk memperbaiki masalah saya telah melakukan langkah-langkah ini -
$hostname ip-10-122-16-169
$ping ip-10-122-16-169 ping: unknown host ip-10-122-16-169
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost6 localhost6.localdomain6
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ip-10-122-16-169 ::1 localhost6 localhost6.localdomain6
$ping ip-10-122-16-169 PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=255 time=0.018 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=255 time=0.024 ms
sumber
Pencarian host di Solaris menggunakan
/etc/nsswitch.conf
jadi tergantung pada apa yang dikatakan baris 'hosts:' itu menentukan apakah/etc/hosts
, NIS, DNS dan / atau LDAP harus dikonsultasikan.Jika Anda hanya menggunakan host dan DNS, Anda harus memiliki ini di
/etc/nsswitch.conf
:Alasan
nslookup desvearth01
berhasil adalah karenanslookup
perintah berkonsultasi secara langsung/etc/resolv.conf
. Jika Anda ingin melakukan pengujian baris perintah yang lebih baik, gunakan perintah:sumber
Kesalahan ini muncul ketika saya mengubah nama workstation dan mencoba memulai Glassfish 2. Anda juga harus mengganti nama entri di / etc / hosts, seperti ini:
127.0.0.1 localhost 127.0.1.1 MyNewName
sumber
Checkout / etc / hostname lalu masukkan nama host Anda ke file host.
sumber
Jika Anda melihat pesan ini daripada Anda perlu mengatur nama host DENGAN
hostname superhost.domain
PERINTAH !Setelah ini, periksa
/etc/hosts
file mana yang berisi string seperti ini127.0.0.1 localhost
.Juga, periksa bahwa perintah
uname -a
mengembalikan sesuatu seperti ini:TIDAK SEPERTI INI!!!!
sumber
Opsi lain ada di posting ini (sebenarnya, apa yang ada di file / etc / sysconfig / network Anda untuk nama host Anda ... dengan mengubahnya menjadi nama FQDN memperbaiki masalah ini).
java getLocalHost () UnknownHostException / etc / hosts file berbeda dengan linux api?
sumber
Saya juga mengalami masalah seputar ini. Saya perlu melakukan pengujian lebih lanjut, tetapi sepertinya
NetworkInterface.getNetworkInterfaces()
bisa lebih andal. Saya pikir ini tidak melakukan pencarian, tetapi hanya mengambil IP.Saya menggunakannya sebagai 'terbaik berikutnya' saat
getLocalHost()
gagal.sumber