我正在尝试将主机名解析为相应的IP地址。
我的环境是一台Mac,位于代理服务器后的公司网络中,该代理服务器通过系统首选项配置了.pac文件(自动代理配置)。到目前为止,一切都正常,我可以访问公司网络内部和外部的资源。
在我的网络中解析主机完全没有问题:
我的环境是一台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中主机名的方法吗?
google.com
,那么您可能需要为您的Java程序配置代理。如需帮助,请阅读此文章:http://download.oracle.com/javase/6/docs/technotes/guides/net/proxies.html。 - Alexander Pogrebnyak