背景

在本地通过命令行 ./bin/catalina.sh run & 启动 tomcat 时,发现无法启动,提示 8005 端口被占用。

报错信息

30-May-2019 17:09:30.762 严重 [main]
org.apache.catalina.core.StandardServer.await StandardServer.await:
create[localhost:8005]: java.net.BindException: Address already in
use at java.net.PlainSocketImpl.socketBind(Native Method) at
java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
at java.net.ServerSocket.bind(ServerSocket.java:375) at
java.net.ServerSocket.(ServerSocket.java:237) at
org.apache.catalina.core.StandardServer.await(StandardServer.java:440)
at org.apache.catalina.startup.Catalina.await(Catalina.java:776) at
org.apache.catalina.startup.Catalina.start(Catalina.java:722) at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497) at
org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:353) at
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:493)

分析解决

  1. 通过命令 sudo lsof -i:8005 查看 8005 端口被谁占用了,输出结果:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 89706 meizu 68u IPv6 0x6dd97d01bd180127 0t0 TCP
localhost:8005 (LISTEN)

  1. 通过命令 kill 89706 杀掉对应进程,其中 89706 为步骤 1 中查到的占用 8005 端口的进程 ID
  2. 再次通过命令 ./bin/catalina.sh run & 启动 tomcat,启动成功;通过这条命令启动时,可以看到 tomcat 启动过程中的 log 信息,有利于分析 tomcat 启动失败的原因

结果

通过访问 http://localhost:8080/ 地址,确认 tomcat 是否启动成功,如果看以下界面,表示启动成功了~
Tomcat 启动时报 java.net.BindException: Address already in use[localhost:8005]

相关文章:

  • 2022-12-23
  • 2022-01-17
  • 2021-06-15
  • 2021-04-07
  • 2021-08-10
  • 2021-10-01
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-17
  • 2022-12-23
  • 2022-01-13
  • 2021-07-09
  • 2021-07-24
相关资源
相似解决方案