windows启微服务端口被占用情况的排查与解决方法

问题如下

复制代码
Failed to start connector [Connector[HTTP/1.1-19200]]

org.apache.catalina.LifecycleException: Failed to start component [Connector[HTTP/1.1-19200]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) ~[tomcat-embed-core-8.5.32.jar:8.5.32]
	at org.apache.catalina.core.StandardService.addConnector(StandardService.java:225) ~[tomcat-embed-core-8.5.32.jar:8.5.32]
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors(TomcatWebServer.java:256) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:198) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.startWebServer(ServletWebServerApplicationContext.java:300) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:162) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) [spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:398) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:330) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1258) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1246) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
	at com.sgcc.xjgc.platform.material.MaterialAppMain.main(MaterialAppMain.java:24) [classes/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_261]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_261]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_261]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_261]
	at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-2.0.4.RELEASE.jar:2.0.4.RELEASE]
Caused by: org.apache.catalina.LifecycleException: Protocol handler start failed
	at org.apache.catalina.connector.Connector.startInternal(Connector.java:1020) ~[tomcat-embed-core-8.5.32.jar:8.5.32]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ~[tomcat-embed-core-8.5.32.jar:8.5.32]
	... 18 common frames omitted
Caused by: java.net.BindException: Address already in use: bind
	at sun.nio.ch.Net.bind0(Native Method) ~[na:1.8.0_261]
	at sun.nio.ch.Net.bind(Net.java:444) ~[na:1.8.0_261]
	at sun.nio.ch.Net.bind(Net.java:436) ~[na:1.8.0_261]
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:225) ~[na:1.8.0_261]
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) ~[na:1.8.0_261]
	at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:210) ~[tomcat-embed-core-8.5.32.jar:8.5.32]
	at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1150) ~[tomcat-embed-core-8.5.32.jar:8.5.32]
	at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:591) ~[tomcat-embed-core-8.5.32.jar:8.5.32]
	at org.apache.catalina.connector.Connector.startInternal(Connector.java:1018) ~[tomcat-embed-core-8.5.32.jar:8.5.32]
	... 19 common frames omitted

根据错误信息,问题出现在尝试启动服务器时,遇到了端口已被占用的情况(Address already in use: bind)。这意味着尝试绑定的端口 19200 已经被另一个进程占用了。

解决方案

1. 查找占用端口的进程

首先,需要找到哪个进程占用了端口 19200。在 Windows 上,可以使用以下命令来查找占用端口的进程:

cmd 复制代码
netstat -ano | findstr 19200

这将列出所有监听在端口 19200 的连接及其对应的进程 ID。

然后,使用以下命令根据进程 ID 查找对应的进程名称:

cmd 复制代码
tasklist | findstr <进程ID>

例如,如果端口被进程 ID 为 1234 的进程占用,命令如下:

cmd 复制代码
tasklist | findstr 1234
2. 终止占用端口的进程

如果确认该进程不是必要的,可以终止它。在 Windows 上,可以使用以下命令杀死进程:

cmd 复制代码
taskkill /F /PID <进程ID>

例如,如果进程 ID 为 1234,命令如下:

cmd 复制代码
taskkill /F /PID 1234
3. 更改应用端口

如果无法终止占用端口的进程,或者希望避免此类冲突,可以更改应用程序监听的端口。在 Spring Boot 应用中,在 application.properties 或 application.yml 文件中更改端口号:

示例 application.properties
properties 复制代码
server.port=19201
示例 application.yml
yaml 复制代码
server:
  port: 19201
4. 检查防火墙设置

确保防火墙设置没有阻止端口 19200 的使用。如果是防火墙问题,可以暂时关闭防火墙进行测试:

cmd 复制代码
netsh advfirewall set allprofiles state off

测试完成后,请记得重新开启防火墙:

cmd 复制代码
netsh advfirewall set allprofiles state on

示例步骤

  1. 查找占用端口的进程:

    cmd 复制代码
    netstat -ano | findstr 19200
  2. 查找对应进程名称:

    cmd 复制代码
    tasklist | findstr <进程ID>
  3. 终止占用端口的进程:

    cmd 复制代码
    taskkill /F /PID <进程ID>
  4. 更改应用端口:

    properties 复制代码
    server.port=19201
  5. 重新启动应用:

    确保更改端口后重新启动应用。

相关推荐
ZhengEnCi12 分钟前
Agent 架构怎么选:从单 Agent 到多 Agent 编排的选型决策指南
算法·架构
星融元asterfusion37 分钟前
工业网络升级实战:100G 双轨 Leaf-Spine 架构破解高并发出货网络瓶颈
网络·架构·spine
BIBI20491 小时前
换 Git 托管平台怎么做?基于 TortoiseGit 的跨平台迁移教程
windows·git·tortoisegit·问题解决·版本控制·最佳实践
天远数科1 小时前
零信任架构实战:基于天远企业法人四要素高级版构建自动化供应商资质穿透核验网关
人工智能·架构·自动化
chushiyunen2 小时前
autoHotKey、windows自动化快捷键工具
运维·windows·自动化
深蓝AI2 小时前
苹果智能入华拆解:八样首批功能、支持的机型、千问在三个入口的位置
人工智能·架构
燃烧的枫3 小时前
Windows 下 YOLO11 Det 的 TensorRT C++ 部署
pytorch·windows·tensorrt·关键点识别·yolo11
海宇大数据4 小时前
零信任架构实战:基于海宇全能小微企业报告构建自动化持牌网络小贷小微商户极速助业贷秒级全维风险决策网关
网络·人工智能·架构·自动化
猪八宅百炼成仙4 小时前
让 AI 帮你清理电脑而不翻车:一个 Windows 体检调优 Skill 的工程化设计
人工智能·windows
鱼宵5 小时前
取集合第一个元素,Java 为什么要写三种写法?
java·windows·python·java21