java.net.
UnknownHostExceptionjava.net.UnknownHostException异常复现的问题(迫使出现这个异常)
Linux32 OS:
java.net.UnknownHostException: tdy218:tdy218 //tdy218为我的主机名(运行hostname的输出结果)
at java.net.InetAddress.getLocalHost(InetAddress.java :1308)
开始我一直在看/etc/hosts文件(/etc/sysconfig/network保持默认),并且不断的修改有关主机名对应IP的位置
Java code
127.0.0.1 localhost.localdomain localhost
192.168.1.18 tdy218
后来保持etc/hosts文件为原始状态,修改/etc/sysconfig/network
Java code
NETWORKING=yes
HOSTNAME=tdy218
但是怎么改都没发生异常,失望!~
这两种方式均可使hostname命令显示主机名为:tdy218
但是后来我又搜搜网上的有关这个异常信息,我就发现我忽视了一个问题,那就是权限的问题,可能/etc/sysconfig/network和/etc/hosts都禁止普通用户访问,于是我
#ls -l /etc/sysconfig/network
显示-rw-r--r-- 也就是所有用户都有读的权限。
#ls -l /etc/hosts
同样显示-rw-r--r-- 也就是所有用户都有读的权限。
于是我通过chmod命令将这两个文件对普通用户去掉所有的权限
#chmod 600 /etc/sysconfig/network
#ls -l /etc/sysconfig/network
显示-rw------- root用户保留读写权限,普通用户去掉所有的权限。
#chmod 600 /etc/hosts
#ls -l /etc/hosts
显示-rw------- root用户保留读写权限,普通用户去掉所有的权限。
结果在普通用户下运行测试程序,依旧没报错!
郁闷!
测试结果表明,InetAddress类getLocalHost()方法时与那两个文件无关!但
java.net.UnknownHostException: tdy218:tdy218 //tdy218为我的主机名(运行hostname的输出结果)
的出现,却是怪事儿!
是否与系统上其他的文件有关?
测试程序:
Java code
import java.net.InetAddress;
public class getLocalHostException{
public static void main(String tdy218[])
{
try
{
String ip = InetAddress.getLocalHost().getHostAddress();
String hostname = InetAddress.getLocalHost().getHostName();
System.out.println("getLocalHost()返回:"+InetAddress.getLocalHost());
System.out.println("HostName:"+hostname+"\n"+"IP:"+ip);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}
或许该测试程序不够接近异常,或许...
大家能否提出一个解决办法或者思路看看这个问题该咋办.
------解决方案--------------------
是挺奇怪的..
在InetAddress源码中:
String local = impl.getLocalHostName();
InetAddress[] localAddrs;
try {
localAddrs =
(InetAddress[]) InetAddress.getAddressFromNameService(local, null);
} catch (UnknownHostException uhe) {
throw new UnknownHostException(local + ": " + uhe.getMessage());
}
你的错误信息:java.net.UnknownHostException: tdy218:tdy218
local正常显示了,应该说明HOSTNAME=tdy218读取没有问题
所以出错点应该在 localAddrs =(InetAddress[]) InetAddress.getAddressFromNameService(local, null);
也就是在取local的ip时异常了
再具体的还有待研究,希望能对你有所帮助
------解决方案--------------------
我也遇到这问题,一直没有解决~~关注中
------解决方案--------------------
路过,帮忙顶一下,看司令来否!