栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

StandardServer.await: create[8005]: java.net.BindException问题原因分析

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

StandardServer.await: create[8005]: java.net.BindException问题原因分析

问题描述:

 启动JBoss的时候一直失败, 查看后台日志发现存在BindException: Cannot assign requested address: JVM_Bind异常。 详细报错如下

2022-2-28 10:01:06 org.apache.catalina.core.StandardServer await
严重: StandardServer.await: create[8005]: 
java.net.BindException: Cannot assign requested address: JVM_Bind
	at java.net.PlainSocketImpl.socketBind(Native Method)
	at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)
	at java.net.ServerSocket.bind(ServerSocket.java:328)
	at java.net.ServerSocket.(ServerSocket.java:194)
	at org.apache.catalina.core.StandardServer.await(StandardServer.java:373)
	at org.apache.catalina.startup.Catalina.await(Catalina.java:662)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:614)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

原因分析:

从日志上看 PlainSocketImple,L383报错, 此处实现socketBind此方法是native方法,从日志上看create[8005] 可能是端口8005被占用引起的报错, 8005 正式Tomcat使用的端口

 private native void socketBind(InetAddress address, int port)
	throws IOException;

protected synchronized void bind(InetAddress address, int lport)
	throws IOException
    {
	    socketBind(address, lport);
    	if (socket != null)
    	    socket.setBound();
    	if (serverSocket != null)
    	    serverSocket.setBound();
    	if (address.isAnyLocalAddress()) {
    	    anyLocalBoundAddr = address;
    	}
    }

查看apache-tomcat-xxxx/conf


  
  .....

  所以怀疑是Tomcate启动的时候8005端口已经被其他程序占用,使用命令查看8005端口占用情况,发现本机端口8005并没有被使用

C:Windowssystem32>netstat -ano|findstr "8005"

C:Windowssystem32>



C:Users10001874>ipconfig

Windows IP 配置
以太网适配器 本地连接 12:
   IPv4 地址 . . . . . . . . . . . . : 192.168.20.43

此时有点蒙,并不是端口占用引起的问题, 后来想起一件事儿, 最近公司网络在调整路由,造成我的IP会经常发生变化, 使用ipconfig 查询自己端口 发现自身的IP已经变成 192.168.20.43

查看etc 配置C:WindowsSystem32driversetchost6s文件,发现如下配置

192.168.20.134	localhost

因此,猜测原IP为192.168.20.134,后来因路由发生了变化重新获取IP后得到了另一个IP地址192.168.20.43, 启动Tomcat的时候,通过localhost 路由到错误的IP后引发了Cannot assign requested address: JVM_Bind错误 ,修改为正确IP后问题得到解决


解决方案:

修改C:WindowsSystem32driversetchost6s文件 将IP修改为当前IP后问题解决

192.168.20.43	localhost

此问题可能有2个问题原因

第一:和上述问题一样,需要修改etc错误的IP配置

第二:8005端口被占用,需要停止使用端口8005的进程将端口释放或者修改apache-tomcat-xxxx/conf上配置的端口8005修改成另一个端口,避免使用被占用的端口

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/911163.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号