首页 > 编程语言 >Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use;端口冲突的原理与解决方案

Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use;端口冲突的原理与解决方案

时间:2024-10-01 15:47:57浏览次数:10  
标签:QQ use already 8082 占用 端口 报错 进程 监听

目录

Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use

一、解决办法

1、查找占用端口的进程

2、结束进程

①在任务管理器中终结指定pid的进程

②在命令提示符中结束进程

 3、重新启动项目

4、对于macOS和Linux系统

二、博主亲历

三、为什么会出现端口冲突的问题

1、端口和监听

2、端口冲突

3、操作系统的端口管理

四、端口冲突常见的解决方案

1、查找并停止占用端口的进程

2、配置应用程序监听其他端口

3、使用端口转发或代理

五、总结


作者:watermelo37

涉及领域:Vue、SpingBoot、Docker、LLM、python等

---------------------------------------------------------------------

温柔地对待温柔的人,包容的三观就是最大的温柔。

---------------------------------------------------------------------

Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use

        启动项目发现端口被占用,问题是项目端口就是常用的开发端口(8080系列...)

        报错信息为:

Description:
Veb server failed to start. Port 8082 was already in use
Action:
Identify and stop the process that's listening on port 8082 or configure this application to listen on another port.

一、解决办法

1、查找占用端口的进程

  1. 以管理员身份打开命令提示符。
  2. 输入以下命令并按回车:
netstat -aon | findstr :8082

        记下输出中的PID(进程ID)

2、结束进程(两种方法)

①在任务管理器中终结指定pid的进程

        在任务管理器中,转到“进程”标签,找到你记下的PID对应的进程,右键点击它,然后选择“结束任务”。

②在命令提示符中结束进程

        将<PID>替换为实际的进程ID。

taskkill /PID <PID> /F

 3、重新启动项目

        终结占用端口的进程后,重新启动项目即可。

4、对于macOS和Linux系统

        查找进程的指令为:

sudo lsof -i :8082

         结束进程的指令为:

sudo kill -9 <PID>

         其余步骤一致。

二、博主亲历

        我出现8082端口占用的时候发现是QQ占用了该端口,直接把QQ退出之后重新启动项目后解决。然后再登录QQ也没有冲突,问题解决。

        QQ在运行时需要监听特定的端口以进行网络通信。可能是因为QQ的某个服务或功能需要在这个端口上进行数据传输或接收。当QQ启动时,它会尝试绑定到这个端口,如果该端口未被其他服务使用,QQ就会成功占用该端口进行通信。如果端口8082被QQ占用,而你又需要在这个端口上运行其他服务,就可能会遇到端口冲突的问题。

三、为什么会出现端口冲突的问题

        本质因为多个进程同时需要使用一个端口,造成问题,具体原因要从端口的相关知识入手。

1、端口和监听

        在计算机网络中,端口是用于区分不同服务的逻辑概念。每个端口都有一个唯一的编号,范围从0到65535。Web服务器通常需要监听一个端口,以便能够接收和响应来自客户端(如浏览器)的请求。当你启动一个Web服务器并指定一个端口时,服务器会尝试绑定到该端口并开始监听。

2、端口冲突

        如果一个端口已经被另一个进程绑定和监听,那么其他进程就不能再绑定到同一个端口上。这是为了防止数据混乱和确保每个服务的独立性。当你尝试启动的Web服务器发现指定的端口(在这个例子中是8082)已经被占用时,它会无法启动,并显示错误信息。

3、操作系统的端口管理

        操作系统负责管理所有网络端口的使用情况。当一个进程请求绑定到某个端口时,操作系统会检查该端口是否可用。如果端口已经被占用,操作系统会拒绝新的绑定请求,并返回一个错误。

        这就是为什么会出现该错误的原因了。

四、端口冲突常见的解决方案

1、查找并停止占用端口的进程

        即本文所介绍的方法

2、配置应用程序监听其他端口

        比如SpringBoot中,会在application.properties文件中声明

server.port=8082

        又比如在Vue项目中会在vue.config.js文件中添加devServer属性,port属性的值就是端口(后面proxy里面的target不是,那个是后端接口应用程序的端口)

    devServer: {
        host: "0.0.0.0",
        port: 8083,
        // 后端接口设置,防止跨域
        proxy: {
            "/api": {
                target: "http://127.0.0.1:8082/",
                ws: true,
                changeOrigin: true,
                pathRewrite: {
                    "^/api": "",
                },
            },
        },
    },

        根据开发语言的特性修改即可。 

3、使用端口转发或代理

        在某些情况下,你可以使用端口转发或代理服务器来解决端口冲突问题。这样,你可以让代理服务器监听一个端口,然后将流量转发到你的Web服务器监听的端口。

五、总结

        本文解决了Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use的问题,并通过介绍端口的使用原理和操作系统的端口管理机制,可以更有效地解决端口冲突问题,并确保Web服务器能够顺利启动和运行。

         只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

        更多优质内容,请关注:

        你真的会使用Vue3的onMounted钩子函数吗?Vue3中onMounted的用法详解

        通过array.filter()实现数组的数据筛选、数据清洗和链式调用

        极致的灵活度满足工程美学:用Vue Flow绘制一个完美流程图

        el-table实现动态数据的实时排序,一篇文章讲清楚elementui的表格排序功能

        干货含源码!如何用Java后端操作Docker(命令行篇)

        JavaScript中闭包详解+举例,闭包的各种实践场景:高级技巧与实用指南

        PDF预览:利用vue3-pdf-app实现前端PDF在线展示

        Docker 入门全攻略:安装、操作与常用命令指南

        shpfile转GeoJSON且控制转化精度;如何获取GeoJSON?GeoJson结构详解

        巧用Array.forEach:简化循环与增强代码可读性

        通过array.reduce()实现数据汇总、条件筛选和映射、对象属性的扁平化、转换数据格式等

        Mapbox添加行政区矢量图层、分级设色图层、自定义鼠标悬浮框、添加天地图底图等

标签:QQ,use,already,8082,占用,端口,报错,进程,监听
From: https://blog.csdn.net/RenGJ010617/article/details/142336005

相关文章

  • 解决MacOS 13.0.1 苹果M1芯片 导入pyaudio报错的问题
    【问题】如果正常按照网上的教程,在terminal先使用brew安装portaudio(brewinstallportaudio),再使用pip在conda环境里安装pyaudio(pipinstallpyaudio),然后python直接导入pyaudio(importpyaudio)会报错如下:【分析】可知报错来自于portaudio动态库。网上搜索解决方案,除了重装、重启......
  • Excel启动报错ntdll.dll?Excel ntdll.dll错误解决方案汇总
    当您在启动MicrosoftExcel时遇到“找不到ntdll.dll”或“ntdll.dll缺失/损坏”的错误提示,这意味着您的计算机上缺少或损坏了一个重要的系统文件。ntdll.dll文件是Windows操作系统中的核心文件之一,用于支持许多底层的系统功能和服务。缺失或损坏该文件会导致包括Excel在内的多......
  • Navicat频繁报错ntdll.dll?ntdll.dll错误修复指南助你恢复正常!
    Navicat频繁报错ntdll.dll确实是一个令人头疼的问题,但别担心,以下是一份详细的ntdll.dll错误修复指南,帮助你恢复正常使用Navicat。一、了解ntdll.dll文件ntdll.dll是Windows操作系统中一个重要的动态链接库文件,它提供了系统级的函数和系统调用支持,执行与进程和线程管理相关的......
  • 怎么解决os.system中Program Files中空格报错的问题
    在通过os.system(PATH)时由于c盘中的ProgramFiles之间带有空格,从而导致在识别时会识别到Program时停止从而产生报错例如:os.system('C:\ProgramFiles(x86)\Microsoft\Edge\Application\msedge.exe')通过网上查找原因,大部分都是说加上双引号就行了我以为是:"C:\ProgramF......
  • JWT 令牌生成报错
    一、问题描述我在获取JWT令牌时,报了一个这样的错误error:io.jsonwebtoken.security.WeakKeyException:Thesigningkey'ssizeis64bitswhichisnotsecureenoughfortheHS256algorithm.二、问题原因原因是我这里指定的签名密钥也就是signingKey,也就是‘cehgnxuyu......
  • Jenkins拉取代码报错通过git配置浅克隆
    在Linux中,使用gitconfig命令配置depth为1意味着你想要为你的Git仓库设置一个浅克隆(shallowclone)。浅克隆会克隆仓库的历史记录中的一个极简版本,通常只包含最近的一次提交。这样做可以节省带宽和时间,特别是对于那些不需要完整历史记录的项目。要配置深度为1的浅克隆,你可以使用以......
  • 【ClickHouse 特点&数据类型&表引擎&SQL操作&副本&分片集群 01】
    概念:ClickHouse是开源的列式存储数据库(DBMS),使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告OLAP这样的适合做一些一次插入多次查询这样的操作(适合查询),对于新增更新删除就不太擅长了,所以ClickHouse是一种分析性数据库HBase也是列式存储......
  • Rustup-init.exe安装后执行cargo run 报错:`link.exe` returned an unexpected error的
    版本:rustc1.81.0(eeb90cda12024-09-04)报错情况如下图:摸索了后,总结一下关键解决方法:从微软件官网:https://visualstudio.microsoft.com/zh-hans/downloads/找到选项“用于VisualStudio的工具”,在其子项中下载“VisualStudio2022生成工具”下载后安装时,在Visualstu......
  • 安防监控/智慧安防EasyCVR视频汇聚监控平台无法启动并报错“no space left on service
    视频汇聚/安防监控/智慧安防EasyCVR视频监控平台,作为一款智能视频监控综合管理平台,凭借其强大的视频融合汇聚能力和灵活的视频能力,在各行各业的应用中发挥着越来越重要的作用。平台可以引入AI智能分析能力,能够实现对视频中的特定对象进行检测、识别、跟踪,为后续的数据分析和处理提......
  • Qt项目中,在main.cpp中定义了一个自定义组件,但是在编译的时候报错`undefined reference
    1、问题描述我在测试Qt项目的main.cpp中编写了如下代码:classMyWidget1:publicQWidget{Q_OBJECT};//main程序入口argc命令行变量的数量argv命令行变量的数组intmain(intargc,char*argv[]){//应用程序对象,在Qt中应用程序对象有且仅有一个QAppl......