Spring Boot应用启动失败:端口8080被占用问题求助
解决Spring Boot端口占用启动失败问题
1. 修正命令行端口指定方式
你之前的命令未完成参数输入,正确的端口指定格式如下:
java -jar target/accessing-data-mysql-initial-0.0.1-SNAPSHOT.jar --server.port=8181
在=后直接补充目标端口号,启动后查看控制台输出的Tomcat started on port(s): 8181 (http)确认端口是否生效。
2. 验证application.properties配置有效性
确保配置文件无拼写错误,正确的端口配置应为:
server.port=8181
同时确认配置文件放置在src/main/resources目录下——若路径错误,配置不会被加载。如果是多环境项目,检查是否激活了其他环境配置(如prod/test),避免默认配置被覆盖。
3. 排查目标端口是否被占用
即使杀死8080端口进程,你指定的新端口可能也被其他进程占用,用以下命令排查:
- Windows系统:
netstat -ano | findstr :8181
找到对应PID后,通过任务管理器结束进程。
- Linux/macOS系统:
lsof -i :8181 # 执行杀死进程命令 kill -9 <PID>
4. 检查代码中是否存在硬编码端口
部分Spring Boot应用会通过Java代码硬编码指定端口,覆盖配置文件和命令行参数,检查主启动类或配置类:
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication app = new SpringApplication(Application.class); // 此类硬编码会覆盖外部配置 app.setDefaultProperties(Collections.singletonMap("server.port", "8080")); app.run(args); } }
若存在此类代码,删除或修改为动态读取配置。
5. 清理缓存并重新构建项目
IDE缓存或构建产物异常可能导致配置不生效,执行以下操作:
- 清理并重新构建Maven项目:
mvn clean install
- 重启IDE并清除缓存(如IntelliJ IDEA的
File -> Invalidate Caches...选项)
6. 检查嵌入式服务器的特殊配置
如果项目引入了非Tomcat的嵌入式服务器(如Jetty、Undertow),需对应调整端口配置:
- Undertow配置示例:
server.undertow.port=8181
查看pom.xml中的服务器依赖,确保配置与依赖匹配。
内容的提问来源于stack exchange,提问作者Furkan Gülenç
相关产品推荐
相关产品推荐

