[报错] SpringBoot 启动报错:Port 8080 was already in use 完美解决(Windows/Mac/Linux)

摘要: 在启动 SpringBoot 项目时,控制台报错 Web server failed to start. Port 8080 was already in use.。这通常是因为上一次项目没有正常关闭,或者 8080 端口被其他软件(如 Oracle, Jenkins 等)占用了。本文提供 3 种解决方法,适用于 Windows、Mac 和 Linux。


1. 报错现象

当你点击运行 SpringBoot 的启动类 Application.java 时,控制台出现如下错误堆栈:

code Java

downloadcontent_copy

expand_less

复制代码
***************************
APPLICATION FAILED TO START
***************************

Description:

Web server failed to start. Port 8080 was already in use.

Action:

Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.

2. 解决方法一:找出并杀死占用端口的进程(推荐)

这是最彻底的解决方法。我们需要找到是哪个程序占用了 8080 端口,然后干掉它。

🟢 Windows 系统解决方案

第一步:打开 CMD 窗口

按下 Win + R,输入 cmd,回车。

第二步:查找占用端口的 PID

输入以下命令:

code Bash

downloadcontent_copy

expand_less

复制代码
netstat -ano | findstr 8080

你会看到类似这样的输出:

code Code

downloadcontent_copy

expand_less

复制代码
TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       12345
  TCP    [::]:8080              [::]:0                 LISTENING       12345

注意最右边的数字 12345,这就是占用端口的 进程 ID (PID) 。

第三步:杀死进程

输入以下命令(将 12345 换成你刚才查到的实际 PID):

code Bash

downloadcontent_copy

expand_less

复制代码
taskkill /F /PID 12345

提示 成功: 已终止 PID 为 12345 的进程 后,重新启动你的 SpringBoot 项目即可!


🟢 Mac / Linux 系统解决方案

第一步:打开终端 Terminal

第二步:查找并杀死进程

有两种方式:

  • 方式 A(分步执行):

    code Bash

    downloadcontent_copy

    expand_less

    复制代码
    # 1. 查找 PID
    lsof -i :8080
    
    # 输出示例:
    # COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
    # java    9876 root   45u  IPv6 0x12345678      0t0     TCP *:http-alt (LISTEN)
    
    # 2. 杀死进程 (将 9876 换成你的 PID)
    kill -9 9876
  • 方式 B(一行命令搞定):

    code Bash

    downloadcontent_copy

    expand_less

    复制代码
    # 直接根据端口号杀进程
    fuser -k 8080/tcp

3. 解决方法二:修改 SpringBoot 项目端口

如果你不想杀进程(比如 8080 被其他重要服务占用了),可以修改当前项目的启动端口。

情况 A:使用的是 application.properties

在 src/main/resources/application.properties 文件中添加:

code Properties

downloadcontent_copy

expand_less

复制代码
# 将端口修改为 8081
server.port=8081

情况 B:使用的是 application.yml

在 src/main/resources/application.yml 文件中修改:

code Yaml

downloadcontent_copy

expand_less

复制代码
server:
  port: 8081

4. 解决方法三:临时救急(启动参数覆盖)

如果你只是想临时跑一下测试,不想改配置文件,也不想查端口,可以在启动配置(Program arguments)中添加参数:

code Bash

downloadcontent_copy

expand_less

复制代码
--server.port=8082

或者在打包运行 jar 包时:

code Bash

downloadcontent_copy

expand_less

复制代码
java -jar demo.jar --server.port=8082

出现 Port 8080 was already in use 是 Java 开发中最常见的问题之一。

  • 最推荐: 使用 方法一(杀死僵尸进程),保持代码配置的整洁。
  • 最快: 使用 方法二(改端口),如果你确实需要同时运行多个服务。

如果这篇文章帮到了你,请点赞 + 收藏!有问题欢迎在评论区留言。

相关推荐
m0_587383003 小时前
广州 24 小时自助健身房解决方案技术实现与实战指南
java·spring·小程序·架构·需求分析
·云扬·3 小时前
Prompt 工程与安全:从 System 设计到注入防御
java·人工智能·安全·ai·prompt
代码不停4 小时前
自动化测试(java)
java·开发语言·selenium·自动化
鬼手点金6 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
paopaokaka_luck7 小时前
滑雪场管理系统(AI智能助手流式对话,ECharts 运营数据分析、教练、雪具与场地一体化预约,钱包支付退款、订单核销与服务评价)
java·人工智能·spring boot·网络协议·数据分析·echarts
SL_staff7 小时前
JVS混合架构实践:能力引擎+动态模型如何支撑企业级可持续交付
spring boot·低代码·全栈
迪飞特科技7 小时前
智慧物业平台实战:Spring Boot 整合小程序实现报修巡检费用全流程
spring boot·后端·小程序
考虑考虑7 小时前
@JsonInclude注解使用
spring boot·后端·spring
Wang's Blog7 小时前
Java 项目实战: 交友项目 - Dubbo 的内部结构与一次调用的完整链路
java·dubbo
jack186897 小时前
Devin 智能软件工程师实战应用指南
windows