Ich teste unsere Serveranwendung (geschriebenes Java) auf verschiedenen Betriebssystemen und dachte, dass OpenSolaris (2008.11) aufgrund der netten Java-Integration am wenigsten problematisch wäre. Es stellte sich heraus, dass ich falsch lag, da ich am Ende eine UnknownHostException hatte
try {
computerName = InetAddress.getLocalHost().getHostName();
if (computerName.indexOf(".") > -1)
computerName = computerName.substring(0,
computerName.indexOf(".")).toUpperCase();
} catch (UnknownHostException e) {
e.printStackTrace();
}
Die Ausgabe ist:
java.net.UnknownHostException: desvearth01: desvearth01
at java.net.InetAddress.getLocalHost(InetAddress.java:1353)
Jedoch, nslookup desvearth01
gibt die korrekte IP - Adresse, und nslookup localhost
kehrt 127.0.0.1
wie erwartet. Der gleiche Code funktioniert auch perfekt unter FreeBSD. Gibt es etwas Besonderes an OpenSolaris, das mir nicht bekannt ist?
Alle Hinweise geschätzt, danke.
quelle
127.0.0.1 localhost <hostname>
war für mich ausreichendhostname
Befehl vom Terminal aus verwenden.Ich benutze
NetworkInterface.getNetworkInterfaces()
als Rückfall für wennInetAddress.getLocalHost()
wirft einUnknownHostException
. Hier ist der Code (aus Gründen der Übersichtlichkeit ohne Ausnahmebehandlung).Andere Antworten bearbeiten die
/etc/hosts
Datei. Dies ist fehleranfällig, spröde, erfordert möglicherweise Root-Zugriff und funktioniert nicht auf allen Betriebssystemen.quelle
Auf meiner Amazon-Instanz hatte ich das gleiche Problem, es gab ein Standardproblem bei der DNS-Konfiguration. Um das Problem zu beheben, hatte ich diese Schritte ausgeführt -
quelle
Host-Lookups unter Solaris werden
/etc/nsswitch.conf
also abhängig davon verwendet , was in der Zeile "hosts:" angegeben ist, ob bestimmt wird, ob/etc/hosts
NIS, DNS und / oder LDAP konsultiert werden sollen.Wenn Sie nur Hosts und DNS verwenden, sollten Sie dies in haben
/etc/nsswitch.conf
:Der Grund dafür
nslookup desvearth01
ist, dass dernslookup
Befehl direkt konsultiert/etc/resolv.conf
. Wenn Sie einen besseren Befehlszeilentest durchführen möchten, verwenden Sie den folgenden Befehl:quelle
Dieser Fehler wird angezeigt, wenn ich den Namen der Arbeitsstation geändert und versucht habe, Glassfish 2 zu starten. Sie müssen den Eintrag auch in / etc / hosts umbenennen.
quelle
Kasse / etc / hostname und füge deinen Hostnamen in die Hosts-Datei ein.
quelle
Wenn Sie diese Meldung sehen, müssen Sie den Hostnamen WITH
hostname superhost.domain
COMMAND festlegen !Überprüfen Sie anschließend, welche
/etc/hosts
Datei eine solche Zeichenfolge enthält127.0.0.1 localhost
.Überprüfen Sie außerdem, ob der Befehl
uname -a
Folgendes zurückgibt:SO NICHT!!!!
quelle
Eine weitere Option finden Sie in diesem Beitrag (tatsächlich behebt das, was sich in Ihrer / etc / sysconfig / network-Datei für Ihren Hostnamen befindet, indem Sie ihn in einen FQDN-Namen ändern, dieses Problem).
java getLocalHost () UnknownHostException / etc / hosts-Datei unterscheidet sich Linux-API?
quelle
Ich habe auch Probleme damit. Ich muss weitere Tests durchführen, aber es sieht so aus
NetworkInterface.getNetworkInterfaces()
es zuverlässiger sein kann. Ich denke, dass dies nicht die Suche macht, sondern nur die IP erfasst.Ich benutze es als das "nächstbeste", wenn das
getLocalHost()
fehlschlägt.quelle