在 CentOS 上 Java 端口被占用(Address already in use) 是非常常见的问题,通常不是 Java 本身的问题,而是 系统/进程/配置 导致的。下面按最常见原因 → 排查方法 → 解决办法说明。
nohup / &)kill -9 没执行或执行错 PID✅ 表现:
java.net.BindException: Address already in use
例如:
TIME_WAITss -lntp | grep 8080
# 或
netstat -lntp | grep 8080
示例输出:
LISTEN 0 100 0.0.0.0:8080 0.0.0.0:* users:(("java",pid=12345,fd=45))
➡️ 说明被 PID 12345 的 java 进程 占用
ps -ef | grep 12345
或:
jps -l
kill -9 12345
jps -l
或:
ps -ef | grep java
docker ps
docker port 容器名
docker stop 容器名
docker rm 容器名
✅ 启动前检查端口
✅ 使用脚本统一管理启动/停止
✅ 不要用 kill -9 作为常规手段
✅ 服务加健康检查 + 优雅停机
✅ 不同环境使用不同端口
你可以补充:
cat /etc/redhat-release)我可以精准帮你定位是哪一类问题。