解决linux下C3P0数据源UnknownHostException的问题
现象
把一个java项目从window上移到linux上后突然出现错误
[INFO] Failed to get local InetAddress for VMID. This is unlikely to matter. At all. We'll add some extra randomness
java.net.UnknownHostException: cv: cv
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>
很是莫名其妙的,我明明连接的地址是localhost的,这个cv是哪冒出来的。
原因
后来终于发现cv是什么东西了,cv是这台计算机的网络名,在cat /etc/sysconfig/network里面配置的。
HOSTNAME=cv
看来是cp30默认把localhost转成了主机名去解析,但是dns解析不出来。就挂了。
解决方法
手动添加解析规则,编辑/etc/hosts
给127.0.0.1后面加上主机名cv保存生效
看来window应该是自动加了自己主机名的解析,linux需要手动添加。