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

[报错] 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

第二步:查找并杀死进程
有两种方式:

方式 B(一行命令搞定):code Bashdownloadcontent_copyexpand_less

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

方式 A(分步执行):code Bashdownloadcontent_copyexpand_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 

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 开发中最常见的问题之一。

  • 最推荐: 使用 方法一(杀死僵尸进程),保持代码配置的整洁。
  • 最快: 使用 方法二(改端口),如果你确实需要同时运行多个服务。
如果这篇文章帮到了你,请点赞 + 收藏!有问题欢迎在评论区留言。

Read more

纯 Java 手写 TopoJSON 生成器!零依赖实战教程

纯 Java 手写 TopoJSON 生成器!零依赖实战教程

目录 前言 一、TopoJSON 核心原理极简科普 1.1 TopoJSON 与 GeoJSON 的核心区别 1.2 TopoJSON 核心结构 二、开发环境与前置准备 2.1 开发环境要求 2.2 前置知识点 三、纯 Java 代码实现 TopoJSON 生成 3.1 基础结构与构造函数 3.2 核心转换方法(GeoJSON 转 TopoJSON) 3.3 拓扑构建核心方法 3.4 辅助方法与使用示例 代码核心说明 四、总结 前言         在GIS(地理信息系统)

By Ne0inhk
Java 大视界 -- Java+Flink CDC 构建实时数据同步系统:从 MySQL 到 Hive 全增量同步(443)

Java 大视界 -- Java+Flink CDC 构建实时数据同步系统:从 MySQL 到 Hive 全增量同步(443)

Java 大视界 -- Java+Flink CDC 构建实时数据同步系统:从 MySQL 到 Hive 全增量同步(443) * 引言: * 正文: * 一、 核心认知:Flink CDC 与全增量同步逻辑 * 1.1 Flink CDC 核心原理 * 1.1.1 与传统数据同步方案的对比(实战选型参考) * 1.2 全增量同步核心逻辑(MySQL→Hive) * 1.2.1 关键技术点(实战必关注,每个点都踩过坑) * 二、 环境准备:生产级环境配置(可直接复用) * 2.1 核心依赖配置(pom.xml)

By Ne0inhk
Java IO 流进阶:Buffer 与 Channel 核心概念解析及与传统 IO 的本质区别

Java IO 流进阶:Buffer 与 Channel 核心概念解析及与传统 IO 的本质区别

在 Java IO 编程中,传统的字节流与字符流大家都不陌生,但当面对高并发、大文件处理等场景时,NIO(New IO)中的 Buffer 与 Channel 逐渐成为性能优化的关键。本文将深入剖析 Buffer 与 Channel 的核心概念,通过对比传统 IO 流,带你理解它们为何能显著提升 IO 效率,并配合直观的图示帮你建立清晰的认知。 一、传统 IO 流的局限性:为什么需要 Buffer/Channel?         在了解 Buffer 与 Channel 之前,我们先回顾传统 IO 流的工作方式。传统 IO 流分为字节流(InputStream/OutputStream) 和字符流(Reader/Writer)

By Ne0inhk
JavaScript中Document对象常见的的属性分析

JavaScript中Document对象常见的的属性分析

JavaScript中的Document对象是网页开发的核心接口,作为DOM(文档对象模型)的根节点,它为开发者提供了操作HTML文档的桥梁。通过Document对象,可以访问和修改页面的结构、内容与样式,例如利用document.getElementById或document.querySelector获取元素,通过document.title或document.cookie读写文档信息,实现动态更新、表单验证、用户交互响应等功能。其丰富的属性不仅涵盖了文档的基本元数据,如URL、标题、字符集、加载状态等,还提供了对页面元素集合的直接访问,如forms、images、links等,极大提升了开发效率和代码的可操作性。在现代前端开发中,Document对象是实现动态网页和单页应用(SPA)不可或缺的基础,几乎所有与页面交互的JavaScript逻辑都依赖于它。         随着Web标准的演进,Document对象也在不断扩展和完善。W3C和WHATWG持续推动DOM规范的发展,使其支持更多现代Web特性,如Shadow DOM、MutationObserver

By Ne0inhk