簡體   English   中英

java.net.UnknownHostException:服務器的主機名無效:本地

[英]java.net.UnknownHostException: Invalid hostname for server: local

我應該采取哪些步驟來解決錯誤:

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

我在 Android 模擬器上添加了新的虛擬主機名,但結果返回

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

當我在我的 PC 上鍵入我的虛擬主機 URL 時,它會顯示。 再說一次,當我在 Emulator 上運行並檢查 Logcat 時,如果 200、202 或錯誤代碼號,我無法讀取或檢查 HTTP 狀態。 它只是返回到UnknownHostException

我在我的mac上遇到了同樣的問題。 當我從終端 ping 我的$HOSTNAME並返回ping: cannot resolve myHostName: Unknown host時,我發現了這個問題。

解決:

  1. 在您的終端上echo $HOSTNAME

  2. 無論它顯示什么主機名(比如說myHostName ),嘗試 ping 它: ping myHostName 如果它返回ping: cannot resolve myHostName: Unknown host然后在/etc/hosts文件中添加一個條目。

  3. 對於該編輯/etc/hosts文件並添加以下內容:

    127.0.0.1 myHostName

真正的例外是沒有名稱為“本地”的已知服務器。 我的猜測是您正在嘗試連接到本地計算機。 嘗試使用主機名"localhost" ,或者可能是127.0.0.1::1 (最后一個是 IPv6)。

javadocs

拋出表示無法確定主機的 IP 地址。

127.0.0.1::1"localhost"應該始終是環回接口,所以如果這不起作用,我會感到非常驚訝。

如果您的網絡上確實有一個名為“本地”的服務器 - 檢查您的 DNS 設置或將其添加到您的主機文件中。

java.net.UnknownHostException:主機未解析:

拋出表示無法確定主機的 IP 地址。

當您連接到有效的 wifi 但路由器沒有接收到互聯網時,也會引發此異常。 很容易重現這個:

  1. 連接到有效的 wifi
  2. 現在在插入路由器時從路由器上拔下電纜

你會看到這個錯誤!!

你無法真正解決這個問題,你只能優雅地通知用戶。 (類似於 - “無法建立連接”)

這不是特定於問題的,但是當我在谷歌搜索提到的UnknownHostException時出現了這個問題,並且在其他任何地方都找不到修復程序,所以我想我會在這里添加一個答案。

不斷收到的異常是:

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

無論我如何嘗試連接到任何有效的主機,在終端中打印它也無濟於事。 一切都是正確的。

解決方案

為包含空格的主機字符串調用trim() 在編寫代理服務器時,主機是從 HTTP 標頭中獲取的,並使用分號作為HOST標頭使用split(":") 這留下了空格,並導致UnknownHostException作為具有空格的主機不是有效的主機。 String host上執行host = host.trim()解決了模棱兩可的問題。

缺少您的主機名。 JBoss 在連接到服務器時使用這個環境變量 ($HOSTNAME)。

[root@xyz ~]# echo $HOSTNAME
xyz

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

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

有很多事情可以導致這種情況。 如果您發現新的原因,請發表評論。

在您可以在服務器上永久解決此問題之前,您可以在 /etc/hosts 文件的末尾添加一行:

127.0.0.1 xyz.xxx.xxx.edu xyz

這可能由於各種原因而發生

1)檢查您是否連接了VPN,如果是,您有時可能會收到此錯誤

“您的主機名 localhost 解析為環回地址:127.0.0.1;使用 10.xxx.1.193 代替(在接口 cscotun0 上)”

2) 檢查您的 $HOSTNAME

3) 嘗試在命令行上 ping $HOSTNAME,如果它不起作用,請調整系統設置以使您的本地主機響應 ping

嘗試以下操作:

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

修剪()網址

嘗試連接到您的本地計算機。嘗試使用主機名“localhost”或者 ::/ - 最后一個是 ipv6

請嘗試將 SPARK_LOCAL_IP 環境變量設置為您要連接的 IP 地址(可以是 localhost 即您自己的 IP 地址)。 例如

$ export SPARK_LOCAL_IP=182.95.208.152

這樣您就不需要更改現有的 linux 設置。 為我工作,希望對你也有幫助。

您的手機與不同服務提供商的不同wifi連接連接起來。 我不知道確切的問題,但我無法連接到具有特定服務提供商的服務器,但是當我連接到其他服務提供商時它可以工作。 所以試試吧!

抓取 xml 文件時,我的 android 應用程序中遇到了這個問題,我的鏈接格式無效,我用完整的 url 重新格式化,它工作了。

如果您在這里是因為您的模擬器為您提供了該異常,請轉到您的 android 模擬器中的工具 > AVD 管理器並冷啟動您的模擬器。

我遇到過同樣的問題。

重新啟動 docker 對我來說是解決方法。 出於某種原因,它需要重新啟動,我不知道為什么,但它起作用了。

如果您的 /etc/localhosts 文件有如下條目: 添加主機名條目如下:

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

這應該可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM