参考: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服务器请求。
相关推荐
在Java编程环境中,获取本地IP地址是一个常见的需求,特别是在服务器端开发中,这可能涉及到网络通信、服务定位等多种场景。以下是一些关于如何在Java中获取本地IP的关键知识点: 1. **网络接口(Network Interface...
### 解决Linux服务错误UnknownHostException的方法 在Linux环境中运行服务时,可能会遇到“UnknownHostException”的异常情况,这通常发生在尝试访问或设置主机名时出现问题。本文将详细介绍如何诊断并解决这一问题...
for (InetAddress addr : addresses) { System.out.println(addr.getHostAddress()); } ``` ##### 2. 操作与属性 - **比较两个`InetAddress`对象**:`equals(Object obj)` 方法可以用来判断两个`InetAddress`...
但是,在不同的网络环境下,IP地址会变化,如果不清空InetAddress类中的私有成员变量map,就可能会导致登录失败。 解决这个问题的方法是,使用反射技术来清空InetAddress类中的私有成员变量map。在Android系统中,...
Java获取Linux服务器上的IP操作 Java获取Linux服务器上的IP操作是Java开发中的一项重要任务。然而,在Linux服务器上获取IP地址却存在一些问题。在本文中,我们将详细介绍Java获取Linux服务器上的IP操作,包括Linux...
### 知识点:网络编程中的InetAddress类使用方法 在网络编程中,`InetAddress` 类是Java标准库中用于处理互联网地址的核心类之一。它主要用于封装和操作IP地址,并提供了一系列方法来获取和处理IP地址相关的数据。...
在Java编程语言中,`InetAddress`类是网络程序设计中的核心组件,它主要用于表示互联网协议(IP)地址。这个类及其相关方法提供了获取和解析主机名与IP地址的能力,无论是本地主机还是远程主机。在分布式系统中,`...
`DomainToIP`这个文件可能是一个示例程序,它展示了如何在Android环境中使用`InetAddress`进行域名到IP的转换。这个项目可能包含了处理网络请求、异常处理以及用户界面显示等相关代码,帮助开发者更好地理解和使用`...
Java网络编程是开发分布式应用程序的关键部分,InetAddress和URL类在其中扮演...在学习和实践中,不仅要掌握基本的API使用,还要注意异常处理、安全性问题以及网络环境的差异,以便在各种场景下都能编写出健壮的代码。
在iOS开发中,获取用户设备当前的IP地址是一项常见的需求,这可以帮助开发者了解应用的网络环境,例如在实现网络诊断、远程服务连接或者位置定位等功能时。本文将详细讲解如何在iOS应用中获取设备的IP地址。 首先,...
InetAddress域名解析
在Java编程环境中,获取局域网(LAN)中所有可用IP地址是一项常见的任务,这通常涉及到网络编程和网络扫描。以下是一份详细的指南,解释如何使用Java实现这一目标。 首先,理解基本概念:局域网是由连接在同一网络...
InetAddress类的代码,用来获取主机名和IP地址
在Java中,`InetAddress`和`Socket`是两个核心类,它们在处理网络连接和通信时起着至关重要的作用。这篇博客将深入探讨这两个类,并通过源码分析来加深理解。 `InetAddress`类代表了互联网上的一个IP地址,它可以是...
在Java编程语言中,`InetAddress`类是网络编程的核心组件之一,主要用于处理IP地址和主机名之间的转换。本示例3.1将深入探讨如何使用`InetAddress`类进行网络通信,包括获取本地主机信息、解析主机名到IP地址以及IP...
InetAddress的用法2---马克-to-win Java视频 马克Java社区
2. `getHostName()`:返回InetAddress对象所包含的域名。 3. `getHostAddress()`:返回InetAddress对象所包含的IP地址。 4. `getLocalHost()`:返回本地主机的InetAddress对象,包含本地主机的域名和IP地址。 在...
InetAddress的用法1 java视频 马克java社区 马克towin
在Linux环境下,硬盘ID通常指的是硬盘的序列号,可以通过`udev`数据库或者`hdparm`命令来获取。Java中,我们可以使用`Runtime.exec()`或`ProcessBuilder`来执行系统命令并捕获输出。以下是一个简单的示例,展示如何...
"Android开发准确获取手机IP地址的...通过ConnectivityManager判断网络环境、getLocalIpAddress()获取本地IP地址和intToIp()获取WI-FI IP地址,这三种方式可以帮助我们准确获取手机IP地址,满足微信支付等操作的需求。