异常Address already in use: JVM_Bind的处理

本文深入探讨了Address already in use异常的产生原因,揭示了其背后的技术机制,并提供了一种更为高效且智能的解决方法。通过进入Tomcat的bin目录并运行shutdown.bat文件,我们可以优雅地解决这一常见问题,避免了盲目重启电脑或Eclipse的笨拙做法。

如题,Address already in use: JVM_Bind这个异常的意思就是说jvm被占用了

那么大家一般的解决情况都是重启一下eclipse , 结果还是不行,结果就只能重启电脑了。

对于这种情况,大家重启是最笨的方法,之所以重启也是因为大家没有明白其中的原理。


那么这个异常是如何发生的呢?

根据我的经验:

一般都是因为eclipse异常退出,而此时启动的Tomcat并没有及时关闭,以至于tomcat一直占用着jvm 没有及时关闭掉服务器导致了该问题的发生

知道了原因,把么如何解决问题就不言而喻了吧?

解决方案:

进入Tomcat的安装目录 的bin目录下 运行shutdown.bat

### 解决 `Address already in use: JVM_Bind` 的方案 当遇到 `Address already in use: JVM_Bind` 错误时,通常是因为目标端口已经被其他进程占用。此问题常见于IDE(如IntelliJ IDEA)中启动Spring Boot应用或其他Java应用程序时。 #### 方法一:查找并终止占用端口的进程 为了处理这个问题,可以按照如下方式操作: - **Windows平台** 使用命令行工具来识别哪个进程正在使用冲突的端口号,并结束该进程。具体步骤为先查询指定端口的占用情况以及对应的PID (Process ID),之后利用获得的PID去终结相应的程序实例[^2]。 ```bash # 查询特定端口(比如9090)及其关联的PID netstat -p tcp -ano | findstr :9090 # 假设得到的结果显示PID为1234,则执行以下指令停止它 taskkill /PID 1234 /F ``` - **Linux/MacOS平台** 对于类Unix系统而言,同样可以通过终端来进行排查和清理工作。这里提供了一套适用于这些系统的命令集[^4]。 ```bash lsof -i :9090 # 获取监听在9090端口上的所有连接信息 kill -9 $(lsof -t -i :9090) # 杀死匹配到的第一个进程ID ``` 这种方法能够快速有效地释放被占用的网络资源,从而允许新的服务正常绑定至所需的通信接口上。 #### 方法二:更改默认端口号配置 如果频繁遭遇此类冲突状况,考虑调整应用程序所使用的HTTP/HTTPS端口也是一种可行的选择。对于基于Spring框架构建的应用来说,在项目的application.properties文件内修改server.port属性值就可以轻松实现这一点[^1]。 ```properties # application.properties 文件中的设置项 server.port=8081 ``` 这样做不仅规避了当前存在的端口争用难题,同时也提高了部署灵活性,使得多项目共存变得更加容易管理。 #### 方法三:确保正确关闭服务器实例 有时开发者可能会忘记完全退出之前运行的服务实例,尤其是在IDE内部调试期间。因此养成良好的习惯——每次完成测试后都应确认所有的Tomcat/Jetty等Web容器已经彻底停机再继续下一步的操作,这有助于减少不必要的麻烦发生几率[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值