java.net.UnknownHostException: Sunucu için geçersiz ana bilgisayar adı: yerel


124

Hatayı çözmek için atmam gereken adımlar nelerdir:

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

Android öykünücüsüne yeni sanal ana bilgisayar adını ekledim ancak sonuç şu şekilde geri dönüyor:

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

Sanal ana bilgisayar URL'mi bilgisayarıma yazdığımda ekranda çalışıyor. Sonra tekrar, Emulator'da çalıştırdığımda ve Logcat'i kontrol ettiğimde, HTTP durumunu okuyamadım veya kontrol edemedim, 200, 202 veya bir hata kodu numarası. Sadece geri döndüUnknownHostException


6
biraz daha fazla bilgi sorunu daha kolay çözmemize yardımcı olur
kelepçe

bir Proxy sunucusunun arkasında mısınız ve proxy ayarlarını yapılandırdınız mı? Öyleyse, yerel ana bilgisayarı ve Proxy sunucusunun yardımına ihtiyaç duymayan diğer ana bilgisayarları geçerli bir IP Adresine çözümlemek için dışlamanız gerekebilir.
asgs

Android öykünücüsüne yeni sanal ana bilgisayar adını ekledim ancak sonuç "java.net.InetAddress.lookUpHostByName (InetAddress.java:506) adresindeki java.net.UnknownHostException sanal ana bilgisayar adı" na dönüyor. Sanal ana bilgisayar URL'mi bilgisayarıma yazdığımda ekranda çalışıyor. Sonra tekrar, Emulator'da çalıştırdığımda ve Logcat'i kontrol ettiğimde, HTTP durumunu okuyamadım veya kontrol edemedim, 200, 202 veya bir hata kodu numarası. Yalnızca "UnknownHostException" konumuna geri döndü
David Dimalanta

Yanıtlar:


66

Gerçekte istisna, "yerel" adında bilinen bir sunucu olmamasıdır. Tahminimce yerel bilgisayarınıza bağlanmaya çalışıyorsunuz. "localhost"Bunun yerine ana bilgisayar adını deneyin veya belki 127.0.0.1ya da::1 (sonuncusu IPv6'dır).

Gönderen javadocs :

Bir ana bilgisayarın IP adresinin belirlenemediğini belirtmek için atıldı.

127.0.0.1veya ::1veya"localhost" her zaman geri döngü arayüzü olmalıdır, bu yüzden bu işe yaramazsa gerçekten şaşırırdım.

Ağınızda gerçekten "yerel" adında bir sunucu varsa - DNS ayarlarınızı inceleyin veya ana bilgisayar dosyanıza ekleyin.


1
Görünüşe göre, bazı uygulamalarda, ağ geçidi / dns değişikliklerinin etkili olması için JVM'nin yeniden başlatılması gerekebilir.
André Laszlo

69

Mac'imde de aynı sorunu yaşıyordum. $HOSTNAMETerminalden ping attığımda sorunu buldum ve geri döndü ping: cannot resolve myHostName: Unknown host.

Çözmek için:

  1. Do echo $HOSTNAMETerminalinizde.
  2. O gösterileri (söz sağlayan hostname ne olursa olsun myHostName), o ping deneyin: ping myHostName. Dönerse ping: cannot resolve myHostName: Unknown host, /etc/hostsdosyanıza bir giriş ekleyin .
  3. Bu düzenleme /etc/hostsdosyası için aşağıdakileri ekleyin:

    127.0.0.1 myHostName

Umarım yardımcı olur.


Kutudan çıkan bazı makinelerde nasıl çalıştığını merak ediyorum ve bazılarında ana bilgisayar girişini eklememiz gerekiyor
Skynet

16

java.net.UnknownHostException: Ana bilgisayar çözümlenmemiş:

Bir ana bilgisayarın IP adresinin belirlenemediğini belirtmek için atıldı.

Bu istisna, geçerli bir kablosuz ağa bağlandığınızda, ancak yönlendirici interneti almadığında da ortaya çıkar. Bunu yeniden üretmek çok kolay:

  1. Geçerli bir kablosuz ağa bağlanın
  2. Şimdi yönlendirici takılıyken kabloyu yönlendiriciden çıkarın

Bu hatayı göreceksiniz !!

Bunu gerçekten çözemezsiniz, sadece kullanıcıyı nazikçe bilgilendirebilirsiniz. ("Bağlantı kurulamıyor" gibi bir şey)


1
İstisnanın, ana bilgisayar DNS'de bulunmadığında veya DNS'nin kendisi bulunamadığında, örneğin herhangi bir ağ bağlantısı nedeni veya yanlış yapılandırma nedeniyle ortaya çıktığını söylemek daha genel olacaktır .
Marquis of Lorne

Peki bu sorunu nasıl çözersiniz?
cokedude

2
Bunu gerçekten çözemezsiniz, sadece kullanıcıyı nazikçe bilgilendirebilirsiniz. ("Bağlantı kurulamıyor" gibi bir şey)
Ash

Bu sorunun bir okul ağında olması, ancak evdeki kişisel bağlantımın olmaması ne anlama geliyor?
sodiumnitrate

@sodiumnitrate Okul ağınız önce bazı kimlik / pwd kimlik doğrulaması gerektiriyor olabilir .. Tarayıcıda herhangi bir web url'sini açmayı deneyin ve bunun düzgün bir şekilde görüntülenip görüntülenmediğine bakın
Ash

7

Bu, soruya özgü değil, ancak bu soru, söz konusu için Google'da arama yaptığımda ortaya çıktı UnknownHostExceptionve düzeltme başka hiçbir yerde bulunamadı, bu yüzden buraya bir cevap ekleyeceğimi düşündüm.

Sürekli olarak alınan istisna şuydu:

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

Herhangi bir geçerli ana bilgisayara nasıl bağlanmaya çalışsam da, onu terminalde yazdırmak da işe yaramaz. Herşey yolundaydı.

Çözüm

trim() Boşluk içeren ana bilgisayar dizesini çağırmamak . Bir proxy sunucusu yazılırken, ana bilgisayar başlık split(":")için noktalı virgül kullanılarak HTTP başlıklarından elde edildi HOST. Bu boşluk bıraktı ve boşluklu UnknownHostExceptionbir ana bilgisayarın geçerli bir ana bilgisayar olmamasına neden olur . Bir Doing host = host.trim()üzerinde String hostbelirsiz sorunu çözdü.


Bu benim sorunumdu.
Sterling Diaz

1
Teşekkür ederim - bu beni kurtardı. Benim durumumda, işleve iletilen String ana bilgisayarının bir \ n soneki vardı, bu yüzden .trim()bu benim için onu düzeltti!
rayzinnz

1
Teşekkürler, iki farklı IP adresi arasında boşluk yazdığımı fark edene kadar sorunun ne olduğunu anlamaya çalışmak için çok fazla zaman harcadım.
Sandoval0992

5

Bu, çeşitli nedenlerden dolayı olabilir

1) Bağlı VPN'iniz olup olmadığını kontrol edin, evet ise bazen bu hatayı alabilirsiniz

"Ana bilgisayar adınız, localhost bir geridöngü adresine çözümlenir: 127.0.0.1; onun yerine 10.xxx.1.193 kullanılarak (cscotun0 arayüzünde)"

2) $ HOSTNAME adresinizi kontrol edin

3) komut satırında $ HOSTNAME'e ping atmayı deneyin ve işe yaramazsa, yerel ana makinenizin pinglere yanıt vermesini sağlamak için sistem ayarlarını değiştirin


5

Ana bilgisayar adınız eksik. JBoss, sunucuya bağlandığında bu ortam değişkenini ($ HOSTNAME) kullanır.

[root@xyz ~]# echo $HOSTNAME
xyz

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

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

Buna neden olabilecek düzinelerce şey var. Yeni bir neden keşfederseniz lütfen yorum yapın.

Sunucunuzda bu sorunu kalıcı olarak çözene kadar bir hack için, / etc / hosts dosyanızın sonuna bir satır ekleyebilirsiniz :

127.0.0.1 xyz.xxx.xxx.edu xyz


4

Takip etmeyi dene :

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

URL'yi kırpın ()


Sabit kodlanmış bir dizeyi boşluk olmadan kırpmanın bir anlamı yok.
Blake McBride

1

Yerel bilgisayarınıza bağlanmak yerine "localhost" ana bilgisayar adıyla veya belki :: / - sonuncusu ipv6'dır


1

Lütfen SPARK_LOCAL_IP ortam değişkenini bağlanmak istediğiniz ip adresine (localhost yani kendi ip adresiniz olabilir) ayarlamayı deneyin. Örneğin

$ export SPARK_LOCAL_IP=182.95.208.152

Bu şekilde mevcut linux ayarlarını değiştirmeniz gerekmeyecektir. Benim için çalıştı, umarım sana da yardımcı olur.


0

Cep telefonunuzu farklı servis sağlayıcı ile farklı wifi bağlantısına bağlayın . Sorunu tam olarak bilmiyorum ancak belirli bir servis sağlayıcı ile sunucuya bağlanamadım ancak başka bir servis sağlayıcıya bağlandığımda çalışıyor. Öyleyse dene!


0

Bir xml dosyası alırken bu sorunu android uygulamamda yaşadım, bağlantımın biçimi geçerli değildi, tam url ile yeniden biçimlendirdim ve işe yaradı.


0

Emülatörünüz size bu İstisnayı verdiği için buradaysanız, android öykünücünüzde Araçlar> AVD Yöneticisi'ne gidin ve Emülatörünüzü Soğuk önyükleyin.


-1

/ Etc / localhosts dosyanızda aşağıdaki gibi giriş varsa: Aşağıdaki gibi ana bilgisayar adı girişi ekleyin:

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

Bu sorunu çözmelidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.