1.问题描述
java.net.BindException: Address already in use <null>:8080
...
...
Caused by: java.net.BindException: Address already in use
...
...
严重: Catalina.start
LifecycleException: Protocol handler initialization failed: java.net.BindException: Address already in use: JVM_Bind<null>:8080
at org.apache.catalina.connector.Connector.initialize(Connector.java:1060)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:677)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:795)
at org.apache.catalina.startup.Catalina.load(Catalina.java:535)
at org.apache.catalina.startup.Catalina.load(Catalina.java:555)
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.load(Bootstrap.java:260)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412)
2.问题分析
由于该8080端口号被占用了
3.问题解决
1)方式一:netstat -an | grep 8080 查询出最后面的PID,然后kill掉
但是 netstat -an | grep 8080 查询出的进程实在太多了不能一个个kill(太费劲)
2)方式二:ps -ef | grep tomcat 找到该应用对应的tomcat的PID,然后kill掉(推荐)
这个问题可能是由于在停掉该tomcat应用时,该端口号下的一些进程并没全停掉导致的。需要kill掉该tomcat应用所有的PID,再重新启动tomcat,就OK了。