【发布时间】:2011-10-18 04:51:57
【问题描述】:
我正在尝试将主机名解析为其对应的 IP。
我的环境是代理服务器后面的公司网络中的 mac,通过系统首选项(自动代理配置)配置了 .pac 文件。到目前为止,一切正常,我可以访问公司网络内外的资源。
在我的网络中解析主机工作得很好:
InetAddress.getByName("host.local");
但是当我使用外部主机名时,我得到一个 UnknownHostException:
InetAddress.getByName("google.com");
生产
Exception in thread "main" java.net.UnknownHostException: google.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)
at Test.main(Test.java:67)
(我对这里的Inet6AddressImpl 有点惊讶)
据我了解,InetAddress.getByName 使用本机机制来解析主机名。所以我不认为错误是由于java jvm中缺少代理配置引起的。
但如果一切正常,还能是什么呢?
一些(可能)有用的附加信息:
我使用的是 MacBook,
ifconfig显示接口 lo0、gif0、stf0、en0、fw0、en1 -> 已连接到网络,地址为 ipv4。控制台上的
nslookup google.com返回** server can't find google.com: NXDOMAIN网络中一台windows机器上的相同代码产生相同的异常
关于这个错误的原因有什么想法吗? 或者还有其他方法可以解析java中的主机名吗?
【问题讨论】:
标签: java proxy hostname resolve