PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

如何解决Java中的UnknownHostException异常?

王林
王林 转载
2023-04-23 21:01:05 2399浏览

同事新分的测试机resin启动的时候出现了Java.NET.UnknownHostException异常,问题原因是在系统的 /etc/Hostname中配置了主机名,而在/etc/hosts文件中没有相应的配置。简单的解决办法是对应关系配好就可以,甚至除/etc/Hostname这个文件也可以。

java.Net.UnknownHostException异常处理问题怎么解决

深层的原因: 在大多数Linux操作系统中,都是以/etc/hosts中的配置查找主机名的,但是 Detian based system用/etc/Hostname文件中的配置做主机名。

而Java 的InetAddress.java 调用 InetAddressImpl.java 的 public native String getLocalHostName() throws UnknownHostException; 来获取本地主机名, Java 的这个方法是native的,是本地系统的一个实现,所以在本地配置出现问题的情况下,Java 代码出现问题。

hostname 查看本机名称,

  • 若本机名称不是一个IP地址, 比如是"sohu",则必须在/etc/hosts中配置 sohu对应本机IP,否则java.net.InetAddress.getLocalHost会抛出java.Net.UnknownHostException异常.

  • 若本机名称是一个IP地址,而且必须是本机某块网卡的IP,

  • 第三种情况比较麻烦。倘若本机名称是一个IP地址,但不是本机某块网卡的IP,或者只是某个IP地址的一部分,比如192.168(这是我遇到过的),那么执行java.net.InetAddress.getLocalHost().getHostAddress()会得到192.0.0.168,java.net.InetAddress.getLocalHost().getHostAddress()不会抛出异常,但相关访问会停滞很久,原因是他在查找192.0.0.168这个地址, 若网络中不存在这个地址,最终会抛出Connection timed out异常;若网络中存在这个地址,Connection refused to host这个异常将被抛出,这些显然都不是想要的

结论:
1. 设置本机名称:hostname mName xxx最好不是写IP地址的形式,若写则必须是本机的完全IP形式(不要只写一半)
2. 在/etc/hosts里加一行 本机IP mName
3. 用InetAddress.getLocalHost().getHostAddress()测试一下结果是否是与本机IP一致

以上就是如何解决Java中的UnknownHostException异常?的详细内容,更多请关注php中文网其它相关文章!

声明:本文转载于:亿速云,如有侵犯,请联系admin@php.cn删除