VSCode 启动 Spring Boot 微服务 JMX 端口冲突问题

VSCode 启动 Spring Boot 微服务 JMX 端口冲突问题(最终解决)

一、问题现象

使用 Visual Studio Code 启动多个微服务时,报错:

text 复制代码
java.rmi.server.ExportException: Port already in use
Caused by: java.net.BindException: Address already in use

即使使用 netstat 也查不到端口占用。


二、根本原因

问题并不在 Spring Boot,而在 JMX(Java 管理接口):

  • JMX 基于 RMI(远程调用)

  • 实际使用 两个端口:

    1. jmxremote.port(注册端口)
    2. jmxremote.rmi.port(通信端口)

👉 如果只配置了一个端口:

bash 复制代码
-Dcom.sun.management.jmxremote.port=52053

那么:

  • 第二个端口会 随机分配
  • 多服务启动时仍然可能冲突

三、正确解决方案(在 launch.json 中配置)

👉 必须在 launch.json 的 vmArgs 中同时固定两个端口

标准写法:

json 复制代码
"vmArgs": "-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=61010 \
-Dcom.sun.management.jmxremote.rmi.port=61010 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=127.0.0.1"

四、多个微服务配置示例

每个服务使用不同端口,例如:

json 复制代码
{
  "configurations": [
    {
      "name": "gateway",
      "vmArgs": "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=61010 -Dcom.sun.management.jmxremote.rmi.port=61010 ..."
    },
    {
      "name": "auth",
      "vmArgs": "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=61011 -Dcom.sun.management.jmxremote.rmi.port=61011 ..."
    },
    {
      "name": "flowable",
      "vmArgs": "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=61012 -Dcom.sun.management.jmxremote.rmi.port=61012 ..."
    }
  ]
}

五、仍然报错的原因

即使配置正确,仍可能出现:

  • JVM 端口未及时释放(TIME_WAIT)
  • JMX 残留导致"假占用"

六、最终解决办法

✅ 1. 更换一组新端口(最有效)

text 复制代码
61010 / 61011 / 61012

避免使用已经报错的端口(如 52053)。


✅ 2. 清理 Java 进程

bash 复制代码
taskkill /F /IM java.exe

✅ 3. 重启系统(兜底)

彻底释放端口资源。


七、总结

JMX 冲突 = 双端口机制 + 端口未释放

最终解决方案:

✅ 在 launch.json 中配置 port + rmi.port

✅ 每个服务使用不同端口

✅ 避免使用已冲突端口

即可彻底解决问题。


相关推荐
十年Java程序媛13 小时前
Java 接口和抽象类对比|Java8 新特性,抛弃老旧八股,正确选型
java·spring boot·后端
for_ever_love__15 小时前
MySQL 高频面试题 30 问:索引、事务、锁、日志、主从与分库分表(MySQL 8.0 版)
java·数据库·spring boot·mysql·spring cloud·面试·总结
SL_staff16 小时前
设备越多系统越崩?根源在三层抽象失效
spring boot·物联网·github
威哥爱编程16 小时前
【AI全栈12-01】Spring Boot 为何是 AI 全栈后端优选
java·spring boot·后端
威哥爱编程16 小时前
【AI全栈12-03】Spring Boot 用多模型路由把智能客服成本降下来
java·spring boot·后端
威哥爱编程16 小时前
【AI全栈12-02】Spring Boot 跑通第一个 AI 对话接口:HR 政策问答机器人实战
java·spring boot·后端
m0_5873830016 小时前
深圳 24 小时自助健身房系统软件开发实战指南与案例解析
java·spring boot·小程序·架构·需求分析
企业数字化笔记18 小时前
AI工具参数很多怎么办?预设、表单校验、危险参数与配置审计
java·spring boot·python·音视频
huaweichenai18 小时前
spring boot对接阿里短信
java·spring boot
马剑威(威哥爱编程)19 小时前
【AI全栈后端12-08】Spring Boot 用 MCP 统一接入内部系统:让 AI 接一次,全公司复用
java·人工智能·spring boot