4

Web プロジェクトで .
ログが表示されます:

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)

しかし、 example.com にping実行すると問題ありません。同様の質問を見つけた ので、サーバー 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 だと思います

それを解決する方法は?
原因は何ですか?

4

3 に答える 3

7

デュアル スタック (ipv6 + v4) の場合、Java は ipv6 を優先します。

ipv6 が何らかの形で誤って設定されている場合は、強制的に ipv4 を優先させることができます。

-Djava.net.preferIPv4Stack=true でシステム プロパティを設定します。

ソース: http://docs.oracle.com/javase/6/docs/technotes/guides/net/ipv6_guide/

于 2013-08-05T11:45:31.140 に答える
6

私は同じ例外を抱えており、両方の「localhost」エントリの/ etc/hostsでホスト名を手動で設定することで解決しました。

127.0.0.1       localhost DL006285-linux

# special IPv6 addresses
::1             localhost ipv6-localhost ipv6-loopback DL006285-linux
于 2015-03-05T14:33:03.510 に答える
1

プログラムにサブネット値を与える際に問題がある可能性があります。プログラムに渡す前に、サブネット値をトリミングして指定しました。

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);
于 2015-01-25T20:51:07.460 に答える