Tomcat啓動報錯:SEVERE: StandardServer.await: create[localhost:8006]: java.net.BindException: Cannot assign requested address
在進行綠色版的tomcat7.0啓動的時候報錯
SEVERE: StandardServer.await: create[localhost:8006]:
java.net.BindException: Cannot assign requested address
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
at java.net.ServerSocket.bind(ServerSocket.java:376)
at java.net.ServerSocket.<init>(ServerSocket.java:237)
at org.apache.catalina.core.StandardServer.await(StandardServer.java:426)
at org.apache.catalina.startup.Catalina.await(Catalina.java:781)
at org.apache.catalina.startup.Catalina.start(Catalina.java:727)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428)
上網查詢了下,各種端口占用的說法,我把所有需要用到的端口都查詢了一遍都沒有記錄
ps -ef|grep 8080
ps -ef|grep 8005
經過多種測試,可以判斷不是端口的問題。那麼就應該是ip綁定問題
檢查 /etc/hosts 文件發現:
192.168.13.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.13.131 dbManagerha2
192.168.13.130 dbManagerha1
192.168.13.132 localhost
這個根本不科學啊,當時我了那個臥槽,然後我修改了第一句爲
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
再次啓動tomcat,啓動SUCCESS!!
總結原因:上網查詢了發現原理
Tomcat在啓動時,會根據配置去獲取所有的IP地址,並且進行逐個綁定,當發現需要綁定的IP地址不存在時,將會觸發上述異常,從而導致無法正常啓動。
//輸出localhost映射的所有IP地址
InetAddress[] ips = InetAddress.getAllByName("localhost");
if (ips != null) {
for (InetAddress ip : ips) {
System.out.println(ip.getHostAddress());
}
}
/* 修改上述hosts文件前,輸出:
* 192.168.13.1
* 127.0.0.1
* 修改文件後,輸出
* 127.0.0.1
*/