很多时候,我们启动Tomcat服务时,会报一个 address already in use 的错误。
这是指,Tomcat的启动端口被占用。一般情况下,Tomcat 默认启动的三个端口为
server port:8005
connector port:8080
redirect port:8443
这些信息在 Tomcat /conf/server.xml 中可以找到,并进行更改配置。
如果在启动时,有任何一个端口被占用,服务将不能正常的开启。
这时,我们需要仔细查看错误信息,看到底是那个端口被占用。
java.net.BindException: Address already in use: JVM_Bind<null>:8080
LifecycleException: service.getName(): "Catalina"; Protocol handler start failed: java.net.BindException: Address already in use: JVM_Bind<null>:8080
java.net.BindException: Address already in use: JVM_Bind
通过以上的报错信息我们得知 8080 端口已被占用。
下面我们就来学习如何在没有第三方工具的情况下,解决该问题。
一般情况下遇到这样的问题,只要去任务管理器中查看有没有 javaw.exe jqs.exe java.exe 等,有就结束它们就行了。这三个进程是最常占用 8080 端口的进程。
如果我们压根就不知道是那个进程占用了情况下怎么办呢?
使用系统命令
netstat -a -o
该命令用于查看计算机当前端口的使用情况信息,根据结果中的 local address
来查看本地的端口信息,state 是该端口的使用情况,如果有你的那个端口信息,且state 不是 close_wait
那么这个端口就被占用了,你就去看 PID 栏显示的信息 ,这个PID 就是进程ID。得到这个进程ID后。
打开任务管理器,查看-选择列-勾选 pid ,然后结束对应 PID 的这个进程即可解决端口被占用的问题。
附加:
wmic process where processid="2108" get name 根据 PID 获得 进程名称
taskkill /f /pid 2568 根据PID 2568 结束相应进程