java.net.UnknownHostException

tdy218 2009-03-16 08:42:18
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/network

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的输出结果)
的出现,却是怪事儿!
是否与系统上其他的文件有关?
测试程序:

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());
}
}
}



或许该测试程序不够接近异常,或许...
大家能否提出一个解决办法或者思路看看这个问题该咋办.
...全文
40373 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyaoyuan 2012-08-07
  • 打赏
  • 举报
回复
我也出现了同样的问题,程序运行一段时间就会出现这个异常,烦的很
chitu11 2010-10-25
  • 打赏
  • 举报
回复
(⊙o⊙)…
ljqsky 2010-05-13
  • 打赏
  • 举报
回复
kankan
zhouwendong006 2010-01-13
  • 打赏
  • 举报
回复
我遇到了跟你类似的问题啊!
tdy218 2009-04-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 YuLimin 的回复:]
hosts里面的东西太多了,理一下,删除不要的
就留一行就成了。

另外ping一下主机与IP都得通

再从其它机器ping一下看。
[/Quote]
我断了网线,这下可彻底了。但我感觉问题还是不在这里。

YuLimin 2009-04-14
  • 打赏
  • 举报
回复
hosts里面的东西太多了,理一下,删除不要的
就留一行就成了。

另外ping一下主机与IP都得通

再从其它机器ping一下看。
hi_0755 2009-04-13
  • 打赏
  • 举报
回复
路过,帮忙顶一下,看司令来否!
aheadspring 2009-04-02
  • 打赏
  • 举报
回复
我也遇到这问题,一直没有解决~~关注中
wencool 2009-03-24
  • 打赏
  • 举报
回复
是挺奇怪的..
在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时异常了

再具体的还有待研究,希望能对你有所帮助
tdy218 2009-03-23
  • 打赏
  • 举报
回复
恐怕我这帖子要石沉大海了!
cangzhubai 2009-03-17
  • 打赏
  • 举报
回复
学习
tdy218 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 coldanimal 的回复:]
把下面这个东西加到你的 /etc/hosts file 44看额

127.0.0.1 tdy218
[/Quote]

我已经测试过(修改/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 也进行过测试验证,在其他用户下执行那个程序还是没报错。
郁闷!请大家继续回复...
tdy218 2009-03-17
  • 打赏
  • 举报
回复
请注意这里:
[Quote=引用楼主 tdy218 的帖子:]
#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的输出结果)
的出现,却是怪事儿!
是否与系统上其他的文件有关?
[/Quote]

补充:OS为Red Hat Linux AS4
weizhaozhe 2009-03-16
  • 打赏
  • 举报
回复
试试
一头头 2009-03-16
  • 打赏
  • 举报
回复
把下面这个东西加到你的 /etc/hosts file 44看额

127.0.0.1 tdy218
一头头 2009-03-16
  • 打赏
  • 举报
回复
ubuntu就是这个挫样哇
你换一个主机名看看可以不?
sudo /bin/hostname xxxxxxx

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧