【小记】connector configured to listen on port 8505 fail to start

发布于:2025-09-07 ⋅ 阅读:(22) ⋅ 点赞:(0)

“connector configured to listen on port 8505 failed to start” 错误原因是 8505 端口被占用 

一、核心原因分析

8505 端口是 Spring Boot 默认的 JVM 调试端口(对应 JVM 参数 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8505),出现启动失败通常有 2 种情况:

  1. 端口已被其他进程占用:其他应用(如另一个 Spring Boot 服务、调试工具)正在使用 8505 端口。
  2. 端口绑定权限不足:在 Linux/macOS 等系统中,1024 以下端口需要 root 权限,但 8505 是高位端口,此情况较少见;更多是端口被系统防火墙 / 安全工具拦截。

二、分系统解决步骤

1. 第一步:检查 8505 端口是否被占用
Windows 系统
  1. 打开「命令提示符」(Win+R → 输入 cmd → 回车)。
  2. 执行命令查看占用 8505 端口的进程:
    netstat -ano | findstr "8505"
    
     
    • 输出示例:TCP 0.0.0.0:8505 0.0.0.0:0 LISTENING 1234
    • 最后一列的 1234 是 进程 ID(PID)
  3. 根据 PID 找到对应的进程:

    cmd

    tasklist | findstr "1234"
    
     
    • 输出示例:java.exe 1234 Console 1 100,000 K(说明是 Java 进程占用)。
  4. 结束占用进程(需谨慎,确保是无关进程):
    • 方法 1:任务管理器 → 找到对应进程(如 java.exe)→ 右键「结束任务」。
    • 方法 2:命令行执行 taskkill /F /PID 1234/F 表示强制结束)。
Linux/macOS 系统
  1. 打开终端,执行命令查看 8505 端口占用:

    bash

    # Linux/macOS通用
    netstat -tulpn | grep 8505
    # 或macOS专用(netstat可能不兼容)
    lsof -i :8505
    
     
    • 输出示例(Linux):tcp 0 0 0.0.0.0:8505 0.0.0.0:* LISTEN 5678/java5678是 PID,java是进程名)。
    • 输出示例(macOS):java 5678 username 45u IPv6 0x123456789 0t0 TCP *:8505 (LISTEN)
  2. 结束占用进程:

    bash

    kill -9 5678  # 5678是占用端口的PID,-9表示强制终止
    
2. 第二步:若端口无法释放,修改默认调试端口

如果 8505 端口被关键进程占用(如其他核心服务),无法结束,可修改当前应用的调试端口(避免冲突):

方式 1:通过「启动参数」修改(推荐,临时生效)

启动 Spring Boot 应用时,在命令行指定新的调试端口(如改为 8506):

bash

# 示例:使用java -jar启动时添加参数
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8506 -jar your-app.jar
方式 2:通过「配置文件」修改(永久生效,需框架支持)

若使用 Spring Boot,可在 application.yml 或 application.properties 中配置调试端口:

  • application.yml

    yaml

    spring:
      devtools:
        remote:
          debug-port: 8506  # 自定义调试端口
    
  • application.properties

    properties

    spring.devtools.remote.debug-port=8506
    
3. 第三步:排查端口绑定权限 / 防火墙问题

若端口未被占用但仍无法启动,可能是权限或防火墙拦截:

  • Linux/macOS 权限:高位端口(1024 以上)无需 root 权限,但如果应用以非 root 用户启动,需确保用户有端口绑定权限(可尝试用 sudo 启动测试:sudo java -jar your-app.jar)。
  • 防火墙拦截
    • Windows:打开「控制面板→系统和安全→Windows Defender 防火墙→高级设置」,检查是否有阻止 8505 端口的入站规则,若有则删除或修改为 “允许”。
    • Linux:执行 sudo iptables -L -n | grep 8505 查看是否有拦截规则,若有则开放端口:

      bash

      # 开放8505端口(临时生效,重启后失效)
      sudo iptables -A INPUT -p tcp --dport 8505 -j ACCEPT
      # 永久生效(CentOS)
      sudo firewall-cmd --zone=public --add-port=8505/tcp --permanent
      sudo firewall-cmd --reload
      

三、验证解决方案

  1. 重新启动应用,观察控制台是否还有端口占用错误。
  2. 若启动成功,可再次检查端口是否正常绑定:
    • Windows:netstat -ano | findstr "8505"(或新端口如 8506),应显示当前应用的 PID 在监听该端口。
    • Linux/macOS:netstat -tulpn | grep 8505 或 lsof -i :8505

四、预防建议

  1. 开发环境中,避免同时启动多个需要调试端口的应用(如多个 Spring Boot 服务),或为每个应用配置唯一的调试端口。
  2. 生产环境中,建议关闭 JVM 调试端口(避免安全风险),只需在启动命令中移除 -agentlib:jdwp=... 相关参数即可。

网站公告

今日签到

点亮在社区的每一天
去签到