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

时间:2009-06-09 00:59:23

标签: java dns aix

我有这个奇怪的错误。

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

5 个答案:

答案 0 :(得分:1)

我也有这个问题。我在Ubuntu64上安装了许多java程序,但它们都不能解析域名(也有多个JRE - 其中一些是IBM产品)。如果我将域名放在具有IP地址的hosts文件中,则它仅适用于这些域。每个其他非Java程序与域解析一起工作得很好。奇怪的! 如果我找到答案,我会在这里发布。如果您有答案,请帮助我们!

答案 1 :(得分:1)

Java似乎不尊重系统上指定的DNS查找的顺序。例如,在/etc/nsswitch.conf的我的Solaris系统中,我定义了:

hosts:files nis dns

Java首先要转到dns,我不明白。通过设置sun.net.spi.nameservice.provider.n属性,似乎可以更改排序。

我发现的一个解决方法是追加'。'在主机名的末尾。例如,如果在/ etc / hosts中,我有

192.168.1.1 mailhost

在我的java应用程序中,我会指定InetAddress.getAllByName("mailhost.")

答案 2 :(得分:1)

设置系统属性

sun.net.spi.nameservice.provider.1 = DNS,太阳

在Ubuntu上为我解决了这个问题

答案 3 :(得分:0)

检查是否需要使用代理,如果是,请在命令行中指定其详细信息

http://helpdesk.objects.com.au/java/how-to-tell-a-java-application-to-use-a-proxy-server

答案 4 :(得分:0)

您必须签入/ etc / services文件。

我遇到了同样的错误,那是因为服务:

domain .......... 

被评论道。