Java无法parsing来自AIX的DNS地址:UnknownHostException

我有这个奇怪的错误。

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

但是,如果我尝试使用Java我有UnkownHostException

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

这是我的testing程序。

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下的某种configuration,禁止程序(如java)访问DNS信息?

我(以及系统pipe理员)在/ 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) 

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

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

我不知道Java是否以不同方式使用DNS,但在AIX上,如果要使用/ etc / hosts文件,则应确保/etc/netsvc.conf设置正确。 默认情况下,如果find/etc/resolv.conf,AIX将使用DNS,然后是主机。 要让主机成为第一个,请确保在/etc/netsvc.conf中有一行代表hosts = local,bind4

Java和AIX肯定存在一些长期的DNS问题,我已经看了一段时间了,但尝试使用完全限定的域名而不是简短的域名。

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