java.net.BindException: 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.<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)
2011-7-20 11:05:18 org.apache.coyote.http11.Http11Protocol pause
前端

2.缘由分析

从上面的描述中就能够看到,是由于端口8005被占用了。java

3.解决方法

在cmd中输入命令:netstat -ano,查看全部端口的占用状况,找到占用端口8005的进程pid,而后在任务管理器中删除该进程,再启动tomcat就能够了。这里若是以为使用cmd命令不方便的话,可使用一个叫作TCPView的软件。apache

cmd下查看端口以下图所示:windows


TCPView下爱看端口以下图所示: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进程。