java.net.UnknownHostException:server:local的主机名无效

时间:2011-06-26 13:34:53

标签: java

我应该采取哪些步骤来解决错误:

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

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

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

当我在我的电脑上输入虚拟主机URL时,它可以显示。然后,当我在Emulator上运行并检查Logcat时,如果200,202或错误代码编号,我无法读取或检查HTTP状态。它只是返回UnknownHostException

14 个答案:

答案 0 :(得分:61)

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

来自javadocs

  

抛出以指示IP地址   无法确定主持人。

127.0.0.1::1"localhost"应该始终是环回界面,所以如果这不起作用,我会非常惊讶。

如果您的网络上确实存在名为“本地”的服务器 - 请检查您的DNS设置或将其添加到您的主机文件中。

答案 1 :(得分:58)

我的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

  4. 希望它有所帮助。

答案 2 :(得分:16)

  

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

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

当您连接到有效的wifi但路由器未接收互联网时,也会引发此异常。很容易重现这个:

  1. 连接到有效的wifi
  2. 现在在插入路由器时从路由器上拔下电缆
  3. 你会发现这个错误!!

    你无法解决这个问题,你只能优雅地通知用户。 (类似于“无法建立联系”)

答案 3 :(得分:5)

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

1)检查您是否已连接VPN,如果是,您可能会收到此错误

"您的主机名localhost解析为环回地址:127.0.0.1;改为使用10.xxx.1.193(在接口cscotun0上)"

2)检查您的$ HOSTNAME

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

答案 4 :(得分:5)

这不是特定的问题,但是这个问题出现在我谷歌搜索提到的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头中获取的,split(":")以分号为HOST标头使用UnknownHostException。这会留下空白,并导致host = host.trim()作为具有空格的主机不是有效主机。在String host上执行$db['default']['hostname'] = 'localhost'; $db['default']['username'] = 'DATABASE USERNAME'; $db['default']['password'] = 'DATABASE PASSWORD'; $db['default']['database'] = 'DATABASE NAME HERE'; $db['default']['dbdriver'] = 'mysql'; 解决了模棱两可的问题。

答案 5 :(得分:5)

您的主机名丢失了。当JBoss连接到服务器时,它使用这个环境变量($ HOSTNAME)。

[root@xyz ~]# echo $HOSTNAME
xyz

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

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

有很多事情可以导致这种情况。如果你发现了新的原因,请发表评论。

对于hack,直到您可以在服务器上永久解决此问题,您可以在/ etc / hosts文件的末尾添加

127.0.0.1 xyz.xxx.xxx.edu xyz

答案 6 :(得分:4)

尝试以下方法:

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

修剪()网址

答案 7 :(得分:1)

尝试使用主机名“localhost”连接到本地computer.try,或者也许:: / - 最后一个是ipv6

答案 8 :(得分:1)

请尝试将SPARK_LOCAL_IP环境变量设置为您要连接的IP地址(可以是localhost,即您自己的IP地址)。例如。

$ export SPARK_LOCAL_IP=182.95.208.152

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

答案 9 :(得分:0)

连接到具有不同wifi连接且与不同的服务提供商连接的手机。 我不知道确切的问题,但是我无法使用特定的服务提供商连接到服务器,但是当我连接到其他服务提供商时它可以工作。试试吧!

答案 10 :(得分:0)

当我获取链接格式无效的xml文件时,在我的android应用中遇到了这个问题,我重新格式化了完整的url并成功了。

答案 11 :(得分:0)

如果您是在这里是因为模拟器为您提供了例外,请转到Android模拟器中的“工具”>“ AVD管理器”,然后冷启动模拟器。

答案 12 :(得分:-1)

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

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

这应解决问题。

答案 13 :(得分:-13)

您也应该替换[]

示例是[hostname],您可以用以下内容替换所有这些:

jdbc:mysql://localhost:3306/openfire