java.net.UnknownHostException: nome host non valido per il server: locale


124

Quali sono i passaggi da eseguire per risolvere l'errore:

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

Ho aggiunto il nuovo nome host virtuale all'emulatore Android ma il risultato torna a

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

Quando digito l'URL del mio host virtuale sul mio PC, funziona sul display. Poi di nuovo, quando ho eseguito Emulator e ho controllato Logcat, non sono riuscito a leggere o controllare lo stato HTTP se 200, 202 o un numero di codice di errore. È semplicemente tornato aUnknownHostException


6
un po 'più di informazioni ci aiuterebbero a risolvere il problema più facilmente
clamp

sei dietro un server proxy e hai configurato le impostazioni del proxy? In tal caso, potrebbe essere necessario escludere localhost e altri host che non necessitano dell'aiuto del server proxy per risolvere un indirizzo IP valido.
asgs

Ho aggiunto il nuovo nome host virtuale all'emulatore Android ma il risultato torna a "java.net.UnknownHostException virtualhostname in java.net.InetAddress.lookUpHostByName (InetAddress.java:506)". Quando digito l'URL del mio host virtuale sul mio PC, funziona sul display. Poi di nuovo, quando ho eseguito Emulator e ho controllato Logcat, non sono riuscito a leggere o controllare lo stato HTTP se 200, 202 o un numero di codice di errore. È semplicemente tornato a "UnknownHostException"
David Dimalanta

Risposte:


66

Ciò che l'eccezione sta realmente dicendo è che non esiste un server conosciuto con il nome "locale". La mia ipotesi è che tu stia cercando di connetterti al tuo computer locale. Prova invece con il nome host "localhost", o forse 127.0.0.1o ::1(l'ultimo è IPv6).

Dai javadoc :

Lanciato per indicare che non è stato possibile determinare l'indirizzo IP di un host.

127.0.0.1o ::1o "localhost"dovrebbe essere sempre l'interfaccia di loopback, quindi se non funziona sarei davvero sorpreso.

Se esiste davvero un server chiamato "locale" sulla tua rete, esamina le tue impostazioni DNS o aggiungilo al tuo file hosts.


1
Su alcune implementazioni, potrebbe essere necessario un riavvio della JVM affinché le modifiche al gateway / dns abbiano effetto, apparentemente.
André Laszlo

69

Ho riscontrato lo stesso problema sul mio Mac. Ho riscontrato il problema quando ho eseguito il ping $HOSTNAMEdal terminale ed è tornato ping: cannot resolve myHostName: Unknown host.

Risolvere:

  1. Fallo echo $HOSTNAMEsul tuo terminale.
  2. Qualunque cosa hostname mostra (diciamo myHostName), cercare di rumore metallico: ping myHostName. Se ritorna, ping: cannot resolve myHostName: Unknown hostaggiungi una voce nel tuo /etc/hostsfile.
  3. Per quel /etc/hostsfile di modifica e aggiungi quanto segue:

    127.0.0.1 myHostName

Spero che sia d'aiuto.


Mi chiedo come funzioni su alcune macchine fuori dagli schemi e su alcune dobbiamo aggiungere la voce host
Skynet

16

java.net.UnknownHostException: host non risolto:

Lanciato per indicare che non è stato possibile determinare l'indirizzo IP di un host.

Questa eccezione viene sollevata anche quando sei connesso a un Wi-Fi valido ma il router non riceve Internet. È molto facile riprodurlo:

  1. Connettiti a una rete Wi-Fi valida
  2. Ora rimuovi il cavo dal router mentre il router è collegato

Osserverai questo errore !!

Non puoi davvero risolverlo, puoi solo avvisare l'utente con garbo. (qualcosa come - "Impossibile stabilire una connessione")


1
Sarebbe più generale affermare che l'eccezione viene sollevata quando l'host non viene trovato nel DNS o quando il DNS stesso non può essere trovato, ad esempio per qualsiasi motivo di connettività di rete o configurazione errata.
Marchese di Lorne

Quindi come risolvi questo problema?
cokedude

2
Non puoi davvero risolverlo, puoi solo avvisare l'utente con garbo. (qualcosa come - "Impossibile stabilire una connessione")
Ash

Cosa significa avere questo problema in una rete scolastica ma non la mia connessione personale a casa?
sodio nitrato

@sodiumnitrate Potrebbe essere che la tua rete scolastica richieda prima un'autenticazione id / pwd .. Prova ad aprire qualsiasi URL web nel browser e controlla se viene visualizzato correttamente
Ash

7

Questo non è specifico per la domanda, ma questa domanda è apparsa quando stavo cercando su Google il menzionato UnknownHostExceptione la correzione non si trova da nessun'altra parte, quindi ho pensato di aggiungere una risposta qui.

L'eccezione che è stata continuamente ricevuta è stata:

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)
    ... 

Non importa come ho provato a connettermi a qualsiasi host valido, stamparlo nel terminale non sarebbe stato d'aiuto. Andava tutto bene.

La soluzione

Non richiede trim() la stringa host che conteneva spazi . Nella scrittura di un server proxy l'host è stato ottenuto dalle intestazioni HTTP con l'uso di split(":")punti e virgola per l' HOSTintestazione. Questo ha lasciato gli spazi vuoti e fa sì che l' UnknownHostExceptionhost con spazi bianchi non sia un host valido. Fare un host = host.trim()sul ha String hostrisolto il problema ambiguo.


Questo era il mio problema.
Sterling Diaz

1
Grazie - questo mi ha salvato. Nel mio caso l'host String passato alla funzione aveva un suffisso \ n, quindi eseguirlo .trim()lo ha risolto per me!
rayzinnz

1
Grazie, ho speso troppo per cercare di capire quale fosse il problema fino a quando mi sono reso conto di aver digitato uno spazio vuoto tra due diversi indirizzi IP.
Sandoval0992

5

Ciò potrebbe accadere per vari motivi

1) Controlla se hai una VPN connessa, potresti ricevere questo errore a volte se sì

"Il tuo nome host, localhost, si risolve in un indirizzo di loopback: 127.0.0.1; utilizzando invece 10.xxx.1.193 (sull'interfaccia cscotun0)"

2) Controlla il tuo $ HOSTNAME

3) prova a eseguire il ping di $ HOSTNAME sulla riga di comando e, se non funziona, modifica le impostazioni di sistema per fare in modo che il tuo host locale risponda ai ping


5

Il tuo nome host è mancante. JBoss utilizza questa variabile d'ambiente ($ HOSTNAME) quando si connette al server.

[root@xyz ~]# echo $HOSTNAME
xyz

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

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

Ci sono dozzine di cose che possono causare questo. Per favore commenta se scopri un nuovo motivo.

Per un hack fino a quando non riesci a risolvere definitivamente questo problema sul tuo server, puoi aggiungere una riga alla fine del tuo file / etc / hosts:

127.0.0.1 xyz.xxx.xxx.edu xyz


4

Prova quanto segue:

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);

Taglia () l'URL


Tagliare una stringa hard-coded senza spazi non ha senso.
Blake McBride

1

Cercando di connettersi al tuo computer locale.try con il nome host "localhost" invece o forse :: / - l'ultimo è ipv6


1

Prova a impostare la variabile d'ambiente SPARK_LOCAL_IP sull'indirizzo IP (può essere localhost, cioè il tuo indirizzo IP) a cui vuoi connetterti. Per esempio

$ export SPARK_LOCAL_IP=182.95.208.152

In questo modo non ti sarà richiesto di modificare le impostazioni esistenti di Linux. Ha funzionato per me, la speranza aiuta anche te.


0

Collega il tuo cellulare con una connessione wifi diversa con un provider di servizi diverso . Non conosco il problema esatto ma non sono riuscito a connettermi al server con un fornitore di servizi specifico, ma funziona quando mi sono connesso ad un altro fornitore di servizi. Quindi provalo!


0

Ho riscontrato questo problema nella mia app Android quando ho preso un file xml il formato del mio collegamento non era valido, ho riformattato con l'URL completo e ha funzionato.


0

Se sei qui perché il tuo emulatore ti dà quell'eccezione, vai su Strumenti> AVD Manager nel tuo emulatore Android e avvia a freddo l'emulatore.


-1

Se il tuo file / etc / localhosts ha una voce come di seguito: Aggiungi la voce del nome host come di seguito:

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

Questo dovrebbe risolvere il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.