You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ IDEA启动Tomcat 8.5.68报错1099端口已占用无进程如何解决

问题成因
  • JMX端口TIME_WAIT状态残留:1099是Tomcat默认的JMX远程调试端口,上次Tomcat异常终止(比如强制关闭IDEA、进程意外崩溃)时,端口未被及时释放,会进入最长2分钟的TIME_WAIT状态,该状态下netstat命令可能因权限、显示范围配置遗漏占用记录,且只会偶发在异常退出后的首次启动场景。
  • 系统动态端口范围冲突:Windows、Linux默认的动态端口分配范围包含1099,系统会随机将该端口预留给未建立的TCP连接,预留状态下无对应进程,netstat无法查询到占用,仅当分配到1099时才会触发报错,因此呈现偶发特性。
  • 双栈协议绑定冲突:1099端口被IPv6协议的进程占用,常规netstat命令默认仅查询IPv4端口占用,因此无法查到对应记录。
  • IDEA辅助进程残留:上次启动Tomcat时IDEA生成的临时管理进程未完全销毁,隐式绑定1099端口,无对应Java进程标识,普通netstat查询无法识别。
解决方案
  1. 直接替换JMX端口(最快生效)
    打开IDEA的Tomcat 8.5.68配置页,进入「Startup/Connection」标签,分别选中Run、Debug模式,将默认的JMX端口修改为10099等未被系统纳入动态端口范围的高位端口,也可在VM参数中追加配置-Dcom.sun.management.jmxremote.port=10099强制指定端口,从根源避免冲突。
  2. 排除1099端口的动态分配
  • Windows系统:以管理员权限启动命令提示符,执行命令netsh int ipv4 add excludedportrange protocol=tcp startport=1099 numberofports=1,将1099从系统动态端口分配范围中移除,重启后生效。
  • Linux/macOS系统:修改/etc/sysctl.conf配置,调整net.ipv4.ip_local_port_range参数的起始值为1100以上,避免包含1099端口。
  1. 精准查询端口占用
  • Windows系统:使用PowerShell执行命令Get-NetTCPConnection -LocalPort 1099 -ErrorAction SilentlyContinue,可查询到IPv4/IPv6、所有状态的端口占用记录,拿到对应PID后可通过taskkill /F /PID 对应PID终止进程。
  • Linux/macOS系统:执行ss -tulpn | grep :1099,该命令比netstat采集范围更全,可查询到TIME_WAIT、隐藏进程的端口占用。
  1. 清理IDEA残留进程
    每次出现报错后,直接结束所有IDEA相关进程和Java残留进程,重启IDEA后再启动Tomcat即可临时解决。

内容的提问来源于stack exchange,提问作者YellowLife

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:45:07