Java 无法解析 AIX 的 DNS 地址:UnknownHostException

Java 无法解析 AIX 的 DNS 地址:UnknownHostException

我遇到了这个奇怪的错误。

在 AIX 上,我可以从命令行访问我的服务器(使用 ping / telnet)

但如果我尝试使用 java,我会得到 UnkownHostException

这是因为 Java 无法以某种方式“使用”DNS,但我不知道为什么。如果我使用 IP 地址,它就可以正常工作。

这是我的测试程序。

    import java.net.*;

    public class Test {
            public static void main( String [] args ) throws Exception  {
                    String host = args[0];
                    int port = Integer.parseInt( args[1] );
                    System.out.println("Connecting to: " + host + " at port: " + port );
                    Socket socket = new Socket( host, port );
                    System.out.println("Connected!");
                    socket.close();
                    System.out.println("Closed!");

            }
     }

是否有人知道 AIX 下某种禁止程序(如 java)访问 DNS 信息的配置?

我(以及 sysadm)已在 /etc/hosts 中添加了我的地址,但它也不起作用。

提前致谢

Java 版本:

Java(TM) 2 Runtime Environment, Standard Edition (build pap32dev-20080315 (SR7))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 AIX ppc-32 j9vmap3223-20080315 (JIT enabled)

答案1

IPv6 支持有问题吗?尝试设置系统属性 java.net.preferIPv4Stack=true。

看看 InetAddress.getAllByName()、InetAddress.getAllByAddress() 返回什么。

答案2

我不知道 Java 是否以不同的方式使用 DNS,但在 AIX 上,如果您要使用 /etc/hosts 文件,则应确保 /etc/netsvc.conf 设置正确。默认情况下,如果找到 /etc/resolv.conf,AIX 将使用 DNS,然后使用 hosts。要将 hosts 放在首位,请确保 /etc/netsvc.conf 中有一行内容,内容类似于 hosts=local,bind4

答案3

Java 和 AIX 确实存在一些长期的 DNS 问题,我已经有一段时间没有关注它了,但请尝试使用完全限定域名而不是短域名。

此外,如果 /etc/resolv.conf 存在,AIX 上的 Java 似乎不会使用 /etc/hosts 文件进行名称解析,天知道为什么。

相关内容