java.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的位置127.0.0.1 localhost.localdomain localhost
192.168.1.18 tdy218后来保持etc/hosts文件为原始状态,修改/etc/sysconfig/networkNETWORKING=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的输出结果)
的出现,却是怪事儿!
是否与系统上其他的文件有关?
测试程序: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());
}
}
}或许该测试程序不够接近异常,或许...
大家能否提出一个解决办法或者思路看看这个问题该咋办.
Linux32 OS:java.net.UnknownHostException: tdy218:tdy218 //tdy218为我的主机名(运行hostname的输出结果)
at java.net.InetAddress.getLocalHost(InetAddress.java :1308)开始我一直在看/etc/hosts文件(/etc/sysconfig/network保持默认),并且不断的修改有关主机名对应IP的位置127.0.0.1 localhost.localdomain localhost
192.168.1.18 tdy218后来保持etc/hosts文件为原始状态,修改/etc/sysconfig/networkNETWORKING=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的输出结果)
的出现,却是怪事儿!
是否与系统上其他的文件有关?
测试程序: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());
}
}
}或许该测试程序不够接近异常,或许...
大家能否提出一个解决办法或者思路看看这个问题该咋办.
解决方案 »
- 谁能教教我 UDP socket 接收时,要防止接收端来不及接收而丢包需要写个数据队列,谁能教我队列在socket类中怎么写
- JAVA内部匿名类中的语句块问题【先多谢高手】
- JTable标题问题
- 请教关于getByName方法的问题
- 请问各位:用java的FileWriter类对文件进行写操作,如果写的时候硬盘空间满,如何能得到硬盘已满的出错信息?
- 请教高手,请看看能不能帮上忙?
- ## 非常难题!100分
- JDBC-ODBC在使用PreparedStatement进行模糊查询时的问题
- 使用eclipse和sysdeo进行开发时,启动tomcat出错。
- 急!! 明天要面试,应该注意那些问题? 大家给点建议!
- 绘图程序有点疑问 求指导
- 如何实现资源管理器中对文件夹的排序,按时间,按名称等?
你换一个主机名看看可以不?
sudo /bin/hostname xxxxxxx
我已经测试过(修改/etc/hosts文件)的:
1.
127.0.0.1 tdy218 localhost.localdomain localhost
2.
127.0.0.1 localhost.localdomain tdy218 localhost
3.
127.0.0.1 localhost.localdomain localhost
192.168.1.18 tdy218
4.
192.168.1.18 tdy218
127.0.0.1 localhost.localdomain localhost
5.
127.0.0.1 localhost.localdomain localhost
192.168.1.18 tdy218
6.
192.168.1.18 tdy218 localhost.localdomain localhost
7.
192.168.1.18 localhost.localdomain tdy218 localhost可能的组合我都改过了,而且
#chmod 600 /etc/sysconfig/network
#ls -l /etc/sysconfig/network
显示-rw------- root用户保留读写权限,普通用户去掉所有的权限。
#chmod 600 /etc/hosts
#ls -l /etc/hosts
显示-rw------- root用户保留读写权限,普通用户去掉所有的权限。而且/etc/sysconfig/network 也进行过测试验证,在其他用户下执行那个程序还是没报错。
郁闷!请大家继续回复...
在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时异常了再具体的还有待研究,希望能对你有所帮助
就留一行就成了。另外ping一下主机与IP都得通再从其它机器ping一下看。