java.net.UnknownHostException: Ungültiger Hostname für Server: lokal

124

Welche Schritte sollte ich unternehmen, um den Fehler zu beheben:

java.net.UnknownHostException: Invalid hostname for server: local

Ich habe den neuen virtuellen Hostnamen im Android-Emulator hinzugefügt, aber das Ergebnis kehrt zu zurück

 java.net.UnknownHostException virtualhostname at 
  java.net.InetAddress.lookUpHostByName(InetAddress.java:506)

Wenn ich meine Virtualhost-URL auf meinem PC eingebe, wird sie angezeigt. Wenn ich Emulator ausführte und Logcat überprüfte, konnte ich den HTTP-Status nicht lesen oder überprüfen, wenn 200, 202 oder eine Fehlercode-Nummer vorhanden waren. Es kehrte einfach zurückUnknownHostException

Ashish Agarwal
quelle
6
Ein bisschen mehr Informationen würden uns helfen, das Problem einfacher zu lösen
Klemme
Stehen Sie hinter einem Proxyserver und haben die Proxyeinstellungen konfiguriert? In diesem Fall müssen Sie möglicherweise localhost und andere Hosts ausschließen, für deren Auflösung die Hilfe des Proxyservers nicht erforderlich ist.
Asgs
Ich habe den neuen virtuellen Hostnamen im Android-Emulator hinzugefügt, aber das Ergebnis kehrt zu "java.net.UnknownHostException virtualhostname at java.net.InetAddress.lookUpHostByName (InetAddress.java:506)" zurück. Wenn ich meine Virtualhost-URL auf meinem PC eingebe, wird sie angezeigt. Wenn ich Emulator ausführte und Logcat überprüfte, konnte ich den HTTP-Status nicht lesen oder überprüfen, wenn 200, 202 oder eine Fehlercode-Nummer vorhanden waren. Es kehrte einfach zu "UnknownHostException" zurück
David Dimalanta

Antworten:

66

Was die Ausnahme wirklich sagt, ist, dass es keinen bekannten Server mit dem Namen "local" gibt. Ich vermute, dass Sie versuchen, eine Verbindung zu Ihrem lokalen Computer herzustellen. Versuchen Sie es "localhost"stattdessen mit dem Hostnamen oder vielleicht 127.0.0.1oder ::1(der letzte ist IPv6).

Aus den Javadocs :

Wird ausgelöst, um anzuzeigen, dass die IP-Adresse eines Hosts nicht ermittelt werden konnte.

127.0.0.1oder ::1oder "localhost"sollte immer die Loopback-Schnittstelle sein. Wenn das nicht funktioniert, wäre ich wirklich überrascht.

Wenn sich in Ihrem Netzwerk wirklich ein Server namens "local" befindet, überprüfen Sie Ihre DNS-Einstellungen oder fügen Sie ihn Ihrer Hosts-Datei hinzu.

André Laszlo
quelle
1
Bei einigen Implementierungen ist möglicherweise ein Neustart der JVM erforderlich, damit anscheinend Änderungen an Gateway / DNS wirksam werden.
André Laszlo
68

Ich hatte das gleiche Problem auf meinem Mac. Ich habe das Problem gefunden, als ich mein $HOSTNAMETerminal anpingte und es zurückkehrte ping: cannot resolve myHostName: Unknown host.

Lösen:

  1. Tun Sie echo $HOSTNAMEauf Ihrem Terminal.
  2. Welchen Hostnamen auch immer angezeigt wird (sagen wir mal myHostName), versuchen Sie, ihn zu pingen : ping myHostName. Wenn es zurückkehrt, ping: cannot resolve myHostName: Unknown hostfügen Sie Ihrer /etc/hostsDatei einen Eintrag hinzu .
  3. Für diese Bearbeitungsdatei /etc/hostsund fügen Sie Folgendes hinzu:

    127.0.0.1 myHostName

Ich hoffe es hilft.

Shobhit Puri
quelle
Ich frage mich, wie es auf einigen Maschinen funktioniert, die
sofort
16

java.net.UnknownHostException: Host ist nicht aufgelöst:

Wird ausgelöst, um anzuzeigen, dass die IP-Adresse eines Hosts nicht ermittelt werden konnte.

Diese Ausnahme wird auch ausgelöst, wenn Sie mit einem gültigen WLAN verbunden sind, der Router jedoch kein Internet empfängt. Es ist sehr einfach, dies zu reproduzieren:

  1. Stellen Sie eine Verbindung zu einem gültigen WLAN her
  2. Entfernen Sie nun das Kabel vom Router, während der Router angeschlossen ist

Sie werden diesen Fehler beobachten !!

Sie können dies nicht wirklich lösen. Sie können den Benutzer nur ordnungsgemäß benachrichtigen. (so etwas wie - "Verbindung kann nicht hergestellt werden")

Asche
quelle
1
Es wäre allgemein zu sagen , dass die Ausnahme ausgelöst wird , wenn der Host nicht in DNS oder wenn der DNS selbst nicht gefunden werden kann, zB für die gefunden wird jede Netzwerkverbindung Grund oder eine Fehlkonfiguration.
Marquis von Lorne
Wie können Sie dieses Problem beheben?
Kokedude
2
Sie können dies nicht wirklich lösen. Sie können den Benutzer nur ordnungsgemäß benachrichtigen. (so etwas wie - "Verbindung kann nicht hergestellt werden")
Ash
Was bedeutet es, dieses Problem in einem Schulnetzwerk zu haben, aber nicht meine persönliche Verbindung zu Hause?
Natriumnitrat
@ Natriumnitrat Möglicherweise erfordert Ihr Schulnetzwerk zuerst eine ID / PWD-Authentifizierung. Versuchen Sie, eine beliebige Web-URL im Browser zu öffnen, und prüfen Sie, ob diese ordnungsgemäß angezeigt wird
Ash
7

Dies ist nicht spezifisch für die Frage, aber diese Frage wurde angezeigt, als ich nach dem genannten gegoogelt habe UnknownHostException, und das Update wurde nirgendwo anders gefunden, sodass ich dachte, ich würde hier eine Antwort hinzufügen.

Die Ausnahme, die kontinuierlich erhalten wurde, war:

java.net.UnknownHostException:  google.com
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.<init>(Socket.java:434)
    at java.net.Socket.<init>(Socket.java:211)
    ... 

Egal wie ich versucht habe, eine Verbindung zu einem gültigen Host herzustellen, das Drucken im Terminal würde auch nicht helfen. Alles war richtig.

Die Lösung

Kein Aufruf trim() der Host-Zeichenfolge, die Leerzeichen enthält . Beim Schreiben eines Proxyservers wurde der Host aus HTTP-Headern unter Verwendung split(":")von Semikolons für den HOSTHeader abgerufen . Dies hat Leerzeichen hinterlassen und bewirkt, dass UnknownHostExceptionals Host mit Leerzeichen kein gültiger Host ist. Doing a host = host.trim()auf der String hostgelöst die zweideutige Frage.

Matrixanomalie
quelle
Das war mein Problem.
Sterling Diaz
1
Danke - das hat mich gerettet. In meinem Fall hatte der String-Host, der an die Funktion übergeben wurde, das Suffix \ n, also wurde .trim()es für mich behoben, wenn ich darauf lief!
Rayzinnz
1
Vielen Dank, ich habe zu viel Zeit damit verbracht, das Problem herauszufinden, bis mir klar wurde, dass ich ein Leerzeichen zwischen zwei verschiedenen IP-Adressen eingegeben habe.
Sandoval0992
5

Dies kann verschiedene Gründe haben

1) Überprüfen Sie, ob Sie eine VPN-Verbindung haben. Wenn ja, wird dieser Fehler manchmal angezeigt

"Ihr Hostname, localhost, wird in eine Loopback-Adresse aufgelöst: 127.0.0.1; verwenden Sie stattdessen 10.xxx.1.193 (auf der Schnittstelle cscotun0)."

2) Überprüfen Sie Ihren $ HOSTNAME

3) Versuchen Sie, $ HOSTNAME in der Befehlszeile zu pingen. Wenn dies nicht funktioniert, passen Sie die Systemeinstellungen an, damit Ihr lokaler Host auf Pings reagiert

Sidharth N. Kashyap
quelle
5

Ihr Hostname fehlt. JBoss verwendet diese Umgebungsvariable ($ HOSTNAME), wenn eine Verbindung zum Server hergestellt wird.

[root@xyz ~]# echo $HOSTNAME
xyz

[root@xyz ~]# ping $HOSTNAME
ping: unknown host xyz

[root@xyz ~]# hostname -f
hostname: Unknown host

Es gibt Dutzende von Dingen, die dies verursachen können. Bitte kommentieren Sie, wenn Sie einen neuen Grund entdecken.

Für einen Hack, bis Sie dieses Problem dauerhaft auf Ihrem Server beheben können, können Sie am Ende Ihrer Datei / etc / hosts eine Zeile hinzufügen :

127.0.0.1 xyz.xxx.xxx.edu xyz
MacGyver
quelle
Vorbeugende Wartung: unix.stackexchange.com/questions/248616/…
MacGyver
4

Versuche Folgendes :

String url = "http://www.google.com/search?q=java";
URL urlObj = (URL)new URL(url.trim());
HttpURLConnection httpConn = 
(HttpURLConnection)urlObj.openConnection();
httpConn.setRequestMethod("GET");
Integer rescode = httpConn.getResponseCode();
System.out.println(rescode);

Trim () die URL

rex roy
quelle
Das Trimmen einer fest codierten Zeichenfolge ohne Leerzeichen macht keinen Sinn.
Blake McBride
1

Versuchen Sie stattdessen, eine Verbindung zu Ihrem lokalen Computer herzustellen. Versuchen Sie stattdessen, den Hostnamen "localhost" zu verwenden, oder vielleicht :: / - der letzte ist ipv6

Joshwayne Diestro
quelle
1

Bitte versuchen Sie, die Umgebungsvariable SPARK_LOCAL_IP auf die IP-Adresse festzulegen (kann localhost sein, dh Ihre eigene IP-Adresse), die Sie verbinden möchten. Z.B

$ export SPARK_LOCAL_IP=182.95.208.152

Auf diese Weise müssen Sie die vorhandenen Linux-Einstellungen nicht ändern. Hat für mich gearbeitet, Hoffnung hilft dir auch.

Jyoti Gupta
quelle
0

Verbinden Sie Ihr Handy mit einer anderen WLAN-Verbindung mit einem anderen Dienstanbieter . Ich kenne das genaue Problem nicht, aber ich konnte keine Verbindung zum Server mit einem bestimmten Dienstanbieter herstellen, aber es funktioniert, wenn ich eine Verbindung zu einem anderen Dienstanbieter herstelle. Also probier es aus!

Suraj Vaishnav
quelle
0

Ich hatte dieses Problem in meiner Android-App beim Abrufen einer XML-Datei. Das Format meines Links war ungültig. Ich habe es mit der vollständigen URL neu formatiert und es hat funktioniert.

Vasmos
quelle
0

Wenn Sie hier sind, weil Ihr Emulator Ihnen diese Ausnahme gibt, gehen Sie in Ihrem Android-Emulator zu Extras> AVD Manager und starten Sie Ihren Emulator kalt.

Felix Favor Chinemerem
quelle
-1

Wenn Ihre / etc / localhosts-Datei den folgenden Eintrag enthält: Fügen Sie den folgenden Hostnameneintrag hinzu:

127.0.0.1 local host (add your hostname here)
::1 (add hostname here) (the last one is IPv6).

Dies sollte das Problem beheben.

user8326951
quelle