参考:http://blog.csdn.net/top_code/article/details/38703769
今天在做一个Java项目中用到了C3P0数据源,程序在Windows下运行没有任何问题,但是往服务器(Linux环境)上部署 运行的时候出现异常了,异常信息如下:
- 2014-08-19 20:51:01 [INFO] Failed to get local InetAddress for VMID. This is unlikely to matter. At all. We'll add some extra randomness
- java.net.UnknownHostException: w: w
- at java.net.InetAddress.getLocalHost(Unknown Source)
- at com.mchange.v2.c3p0.impl.C3P0ImplUtils.generateVmId(C3P0ImplUtils.java:120)
- at com.mchange.v2.c3p0.impl.C3P0ImplUtils.<clinit>(C3P0ImplUtils.java:98)
- at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<init>(PoolBackedDataSourceBase.java:227)
- at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.<init>(AbstractPoolBackedDataSource.java:62)
- at com.mchange.v2.c3p0.ComboPooledDataSource.<init>(ComboPooledDataSource.java:109)
- at com.mchange.v2.c3p0.ComboPooledDataSource.<init>(ComboPooledDataSource.java:105)
- .......
- Caused by: java.net.UnknownHostException: w
- at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
- at java.net.InetAddress$1.lookupAllHostAddr(Unknown Source)
- at java.net.InetAddress.getAddressesFromNameService(Unknown Source)
- ... 23 more
乍一看感觉莫名其妙,从来都没碰到过这样的异常,最后在Google上找到了解决办法,先说明一下导致这个异常的原因,然后给出解决办法。
问题原因
先看看UnknownHostException: w 中w是怎么得来的吧,cat /etc/sysconfig/network 文件,内容如下:
- [root@w picture]# cat /etc/sysconfig/network
- NETWORKING=yes
- HOSTNAME=w
HOSTNAME=w,噢噢,看到这里顿时感觉 柳暗花明了,原来是因为系统没有找到主机名w对应的IP,只需修改Linux的hosts文件即可。
解决办法
上面已经分析错误原因了,主要是因为系统没有找到主机名w对应的IP,修改Linux的hosts文件即可。具体操作步骤如下:
首先,执行 cat /etc/hosts 命令,如下:
- [root@w picture]# cat /etc/hosts
- 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
- ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
然后再执行 vi /etc/hosts 命令
在第一行 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 后加上 w 保存即可。
修改完之后的hosts文件如下:
- [root@w picture]# cat /etc/hosts
- 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 w
- ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
Linux查找域名时通常指先查找文件/etc/hosts,找不到时再向DNS服务器请求。
相关推荐
网络编程 InetAddress 的使用
InetAddress表示ip地址,也就是主机,没有构造方法,只能通过一些get方法获取实例。如果通过主机名来获取InetAddress实例会调用本地的dns服务。
InetAddress域名解析
InetAddress类的代码,用来获取主机名和IP地址
InetAddress 类进行域名解析后,域名和ip会保存,如何清除。本资源娓娓道来。
可以获得本机及指定主机的IP地址 是源码
InetAddress的用法2---马克-to-win Java视频 马克Java社区
Java网络编程基础-InetAddress类与URL类
InetAddress的用法1 java视频 马克java社区 马克towin
示例3.1 使用InetAddress
Refusing to generate id for %d milliseconds", lastTimestamp - timestamp)); } //如果上次生成时间和当前时间相同,在同一毫秒内 if (lastTimestamp == timestamp) { //sequence自增,因为sequence只有12bit...
最近在学习soket编程中,看到有需要获取到IP地址之类的需求,所以就去看了下如何获取到主机名的IP地址。 其实就是需要用到一个类InetAddress。他是在java.net包下面。 InetAddress类的对象用于IP地址和域名,该类...
InetAddress简单使用例程。网上现有InetAddress例程老是闪退,这是自己重整理后可以使用的完整工程。
NULL 博文链接:https://hnzhoujunmei.iteye.com/blog/784338
主要介绍了Java中的IP地址和InetAddress类使用详解,是Java入门学习中的基础知识,需要的朋友可以参考下
主要介绍了Java编程中利用InetAddress类确定特殊IP地址的方法,InetAddress类是Java网络编程中一个相当实用的类,需要的朋友可以参考下
Java网络基本类 ---InetAddress类;import .*; public class IPAddressDemo { public static void main(String[] args) { try { InetAddress localAddr = InetAddress.getLocalHost();//获得本机InetAddress System....
clojure-inetaddress Clojure InetAddress。 java.net.InetAddress 类包装器。 用法 获取主机的 IP 地址,给定主机名: => (by-name "github.com") # 获取本地主机地址: => (localhost) # 检查地址地址是否可...
gethostname4j 简单的JNA库可从Java获取当前计算机的主机名我很沮丧地发现InetAddress.getLocalHost().getHostName() Java惯用语在某些情况下返回localhost,而这似乎只能通过修改/etc/hosts来解决。 该库使用JNA...