问题描述:
Linux启动tomcat时,出现如下所示报错:
java.net.BindException: Address already in use
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:444)
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:601)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428)
报错信息非常明显,端口被占用。
解决方法:
sudo netstat -nltp | grep 8090,找出占用端口的进程,8090是tomcat端口。1804为进程id,杀掉进程就可以重新启动了。
root@iZ94gmrlvfbZ:/data_b/web/xiaoyaoshi_app_guest# sudo netstat -nltp | grep 8090
tcp 0 0 0.0.0.0:8090 0.0.0.0:* LISTEN 1804/java
root@iZ94gmrlvfbZ:/data_b/web/xiaoyaoshi_app_guest# kill -9 1804
root@iZ94gmrlvfbZ:/data_b/web/xiaoyaoshi_app_guest# sudo netstat -nltp | grep 8090
root@iZ94gmrlvfbZ:/data_b/web/xiaoyaoshi_app_guest# sh bin/startup.sh
Using CATALINA_BASE: /data_b/web/xiaoyaoshi_app_guest
Using CATALINA_HOME: /data_b/web/xiaoyaoshi_app_guest
Using CATALINA_TMPDIR: /data_b/web/xiaoyaoshi_app_guest/temp
Using JRE_HOME: /usr/lib/jvm/jdk1.7.0_07/jre
.
.
.
启动其他容器如果遇到端口占用问题,应该也是可以通过这个方法解决。
如果有写的不对的地方,请大家多多批评指正,非常感谢!