【问题标题】:A strange UnknownHostException一个奇怪的 UnknownHostException
【发布时间】:2013-08-06 02:10:01
【问题描述】:

在网络项目中。
我看到了日志:

hadoop.hbase.zookeeper.ZKConfig - java.net.UnknownHostException: example.com 
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:850)
at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1201)
at java.net.InetAddress.getAllByName0(InetAddress.java:1154)
at java.net.InetAddress.getAllByName(InetAddress.java:1084)
at java.net.InetAddress.getAllByName(InetAddress.java:1020)
at java.net.InetAddress.getByName(InetAddress.java:970)

但是当我ping example.com,没关系,我也telnet example.com 2181成功了! 我找到了similar question 所以我在我的服务器 java DomainResolutionTest example.com 中运行 DomainResolutionTest
不过没关系!

环境:

java -version

java版本“1.6.0_25”
Java(TM) SE 运行时环境(内部版本 1.6.0_25-b06)
Java HotSpot(TM) 64 位服务器 VM(内部版本 20.0-b11,混合模式)

os:Red Hat Enterprise Linux Server release 5.7

我很好奇为什么是Inet6AddressImpl,我想可能是Inet4AddressImpl

如何解决?
什么原因?

【问题讨论】:

  • 它可以重复吗?这可能只是暂时的 DNS 故障。
  • 如果你对 ipv6 有问题,你可以指定一些 jvm 标志来强制只使用 ipv4。
  • @RobinGreen ,它是可重复的。每次出现。
  • 我找到了答案。因为我弄错了,配置主机名包含黑色。谢谢大家!

标签: java dns ipv6


【解决方案1】:

如果是双栈(ipv6 + v4),Java 更喜欢 ipv6。

如果您的 ipv6 以某种方式配置错误,您可以强制它首选 ipv4。

设置系统属性: -Djava.net.preferIPv4Stack=true

酸:http://docs.oracle.com/javase/6/docs/technotes/guides/net/ipv6_guide/

【讨论】:

  • 这正是我在 EC2 上使用 aws jdk 时发生的情况......非常感谢!
【解决方案2】:

我遇到了同样的异常,并通过在 /etc/hosts 中为“localhost”条目手动设置我的主机名来解决它。

127.0.0.1       localhost DL006285-linux

# special IPv6 addresses
::1             localhost ipv6-localhost ipv6-loopback DL006285-linux

【讨论】:

    【解决方案3】:

    给程序分配子网值可能有问题。 在传递给程序之前,我通过修剪它给出了子网值。

    subnet = subnet.trim();
    int timeout = 1500;
    for(int i=1;i<254;i++)
            {
            try
              {
                String host = subnet +"."+i;
                if (InetAddress.getByName(host).isReachable(timeout))
                  {
                    Check = Check+host+"\n";
                    System.out.println(host);
                  } 
    
               }
            catch (UnknownHostException ex) { 
                Logger.getLogger(WiFi.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(WiFi.class.getName()).log(Level.SEVERE, null, ex);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 2011-10-01
      • 1970-01-01
      相关资源
      最近更新 更多