org.apache.catalina.core.StandardServer await
SEVERE: StandardServer.await: create[8005]:
java.net.BindException: Cannot assign requested address
java.net.BindException: Cannot assign requested address
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at org.apache.catalina.core.StandardServer.await(StandardServer.java:373)
at org.apache.catalina.startup.Catalina.await(Catalina.java:662)
at org.apache.catalina.startup.Catalina.start(Catalina.java:614)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
org.apache.coyote.http11.Http11Protocol pause
出現這個問題,網上99%都說是端口問題,但是也有幾個其他情況。
1.端口被占用
1).如果使用ecplipse和jbuilder里的Tomcat時,遇到像下面這樣的問題.嚴重: StandardServer.await: create[8005]:
java.net.BindException: Address already in use: JVM_Bind其實問題比較簡單,1,獨立運行的Tomcat沒有關閉.自安裝的tomcat程序設置開機自動運行,
或者 在之前運行過,先關閉ecplipse或jbuilder,在任務管理器中找到Tomcat的進程,將其kill掉,即可.有時候Tomcat非法關閉時,在進程中,仍然存在,仍然占用8080
端口.所 以只要將其進程殺掉.就可以解決
2).安裝了其他的軟件占用了Tomcat的端口.用可以netstat -ano 查看端口的工具查看一下,或者,直接改掉tomcat的默認端口.即可.
結束掉該進程后,Tomcat正常啟動。或者到安裝目錄/conf/下找到server.xml,找到使用8005端口的語句,把端口號改成不在使用的(8006)。
2.Cannot assign requested address的原因也有可能是localhost被路由到了別的機器。
在命令窗口
ping localhost
發現確實被路由到了別的機器(一個202.x.x.x的IP),打開/etc/hosts發現沒有指定127.0.0.1的解析地址。
這下就解決問題了,修改localhost讓它重新指向本機地址 127.0.0.1
127.0.0.1 localhost 重啟Tomcat就會發現啟動正常了。