java.net.UnknownHostException:服务器的主机名无效:local

我应该采取什么措施来解决这个错误:

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

我在Android模拟器中添加了新的虚拟主机名,但结果返回

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

当我在我的电脑上键入我的虚拟主机URL时,它会显示。 再次,当我在Emulator上运行并检查Logcat时,我无法读取或检查HTTP状态(如果200,202或错误代码号)。 它只是返回到UnknownHostException

真正意义上的例外是没有名称为“local”的已知服务器。 我的猜测是你正试图连接到你的本地计算机。 尝试使用主机名"localhost" ,或者使用127.0.0.1 / ::1 (最后一个是IPv6)。

从javadocs :

抛出以表明无法确定主机的IP地址。

127.0.0.1 / ::1 / "localhost"应该永远是环回接口,所以如果这不起作用,我会很惊讶。

如果networking上确实有一台名为“本地”的服务器,请检查您的DNS设置或将其添加到您的主机文件中。

我在我的Mac上遇到同样的问题。 我发现这个问题,当我从terminalping我的$HOSTNAME ,并返回ping: cannot resolve myHostName: Unknown host

解决:

  1. 在terminal上echo $HOSTNAME
  2. 无论显示myHostName主机名(可以说myHostName ),尝试ping它: ping myHostName 。 如果它返回ping: cannot resolve myHostName: Unknown host然后添加一个条目到您的/etc/hosts文件。
  3. 对于编辑/etc/hosts文件并添加以下内容:

    127.0.0.1 myHostName

希望它有帮助。

java.net.UnknownHostException:主机未解决:

抛出以表明无法确定主机的IP地址。

当你连接到一个有效的WiFi,但路由器没有收到互联网时,也会引发这个exception。 它很容易重现这一点:

  1. 连接到有效的无线networking
  2. 当路由器插入时,现在从路由器上拔下电缆

你会观察这个错误!

你不能真正解决这个问题,你只能优雅地通知用户。 (类似 – “无法build立连接”)

这可能由于各种原因而发生

1)检查你是否连接了VPN,如果有,你可能会得到这个错误

“你的主机名localhostparsing为一个环回地址:127.0.0.1;改为使用10.xxx.1.193(在接口cscotun0上)”

2)检查你的$ HOSTNAME

3)尝试在命令行上ping $ HOSTNAME,如果它不起作用,请调整系统设置以使本地主机响应ping

您的主机名丢失。 JBoss在连接到服务器时使用这个环境variables($ 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 

这不是特定的问题,但这个问题出现了,当我谷歌search提及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) ... 

不pipe我如何连接到任何有效的主机,打印到terminal上也无济于事。 一切都是正确的。

解决scheme

不要 为包含空格的主机string 调用 trim() 。 在编写代理服务器时,主机是通过使用split(":")分号的HOST头从HTTP头获得的。 这留下了空白,并导致UnknownHostException作为主机与空白不是一个有效的主机。 在String host上执行host = host.trim()解决了不明确的问题。

尝试连接到您的本地computer.try与主机名“本地”,而不是或者:: / – 最后一个是ipv6

请尝试将SPARK_LOCAL_IP环境variables设置为要连接的IP地址(可以是本地主机,也就是您自己的IP地址)。 例如

$ export SPARK_LOCAL_IP=182.95.208.152

这样你就不需要改变现有的linux设置。 为我工作,希望也能帮助你。

如果您的/ etc / localhosts文件具有以下条目:添加主机名如下:

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

这应该可以解决问题。

你应该更换[]了!

这个例子是[hostname] ,你可以用这样的东西replace所有这些:

 jdbc:mysql://localhost:3306/openfire