我正在尝试将主机名解析为其相应的 IP。
我的环境是公司网络中代理服务器后面的一台 Mac,通过系统首选项(自动代理配置)配置了 .pac 文件。到目前为止,一切工作正常,我可以访问公司网络内部和外部的资源。
解析我的网络中的主机工作得很好:InetAddress.getByName("host.local");
但是当我使用外部主机名时,我收到 UnknownHostException:InetAddress.getByName("google.com");
produces
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
here)
据我了解,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中的主机名吗?
您的公司 DNS 服务器会阻止您解析 Internet 域(他们可能不希望人们浏览非公司上下文)。
您的事实证明了这一点nslookup
查询失败。
如果您对公司政策没有投票权,并且您的开发机器必须留在公司场所,那么您无能为力。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)