1. 程式人生 > >Address already in use: JVM_Bind(埠衝突)

Address already in use: JVM_Bind(埠衝突)

1.錯誤描述

2011-7-20 11:05:18 org.apache.catalina.core.StandardServer await
嚴重: StandardServer.await: create[8005]:
java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.(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)
2011-7-20 11:05:18 org.apache.coyote.http11.Http11Protocol pause
2.原因分析

從上面的描述中就可以看到,是因為埠8005被佔用了。
3.解決方法

在cmd中輸入命令:netstat -ano,檢視所有埠的佔用情況,找到佔用埠8005的程序pid,然後在工作管理員中刪除該程序,再啟動tomcat就可以了。
4.通常出現Address already in use: JVM_Bind錯誤的可能性分析

I.就是當前埠已經有別的程式在佔用著,所以要麼把佔用這個埠的程式關閉,要麼重新換一個埠
II.埠號被佔用,如果你有裝oracle的話,有可能是oracle使用了8080埠,oracle安裝後並且如果啟動了OracleHttp服務會佔用8080埠
III.我認為很可能是多啟動了幾次TOMCAT,在ECLIPSE下重複啟動TOMCAT就會出現這個問題,你去調查一下看看是否是這個原因.
IV.如果不是windows作業系統,那麼80埠已經被佔用.如果是windows作業系統.請檢查是否裝有IIS.
V.啟動了多個Tomcat。
我就是因為啟動了兩個Tomcat,所以才會報這樣的錯誤,通常情況下, 多次啟動Tomcat或者非正常關閉Myeclipse,但是佔用埠的程序沒有關閉,也會出現這樣的錯誤。解決方法是關閉javaw.exe程序。

————————————————————————————————————————————————
我滴原因是因為myeclipse異常關閉,導致未關閉完全,再次開啟myeclipse時javaw.exe開啟了兩個,所以開啟工作管理員關閉掉javaw.exe就行了。