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.jsonvmArgs 中同时固定两个端口

标准写法:

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

✅ 每个服务使用不同端口

✅ 避免使用已冲突端口

即可彻底解决问题。


相关推荐
dkbnull3 小时前
Spring Boot请求处理组件对比详解
java·spring boot
不能只会打代码3 小时前
Day 011 — Spring 全家桶深度拆解
spring boot·mybatis·spring aop·spring mvc·spring ioc
吴声子夜歌4 小时前
MongoDB 4.x——SpringBoot框架整合
数据库·spring boot·mongodb
游戏开发爱好者84 小时前
iOS开发IDE有哪些 Xcode 和 快蝎 轻量替代方案
ide·vscode·ios·个人开发·xcode·swift·敏捷流程
snow@li4 小时前
Spring Boot:项目服务器完整部署教程(零基础可直接实操)
服务器·spring boot·后端
张太行_5 小时前
vscode在open folder如何设置默认路径
ide·vscode·编辑器
万亿少女的梦1685 小时前
基于Spring Boot、Java与MySQL的网络订餐系统设计与实现
java·spring boot·mysql·系统设计·网络订餐
鱟鲥鳚14 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
腾渊信息科技公司16 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
隔窗听雨眠20 小时前
Spring Boot在云原生时代的编程范式革新研究
spring boot·后端·云原生