项目场景:
启动Tomcat的时启动报错,查看启动日志存在 JVM_Bind错误,
问题描述
后台日志详细信息如下
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.<init>(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)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
原因分析:
1.查看C:\Windows\System32\drivers\etc\hosts 配置信息发现其中一个配置设置192.168.20.43为localhost
192.168.20.43 localhost
2.使用ipconfig查看本机IP信息,本机ID为192.168.20.146
C:\Users\10001874>ipconfig
Windows IP 配置
以太网适配器 本地连接 2:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . :
以太网适配器 本地连接 12:
IPv4 地址 . . . . . . . . . . . . : 192.168.20.146
子网掩码 . . . . . . . . . . . . : 255.255.255.0
3. IP绑定的问题,Tomcat在启动时,会根据配置去获取所有的IP地址,并且进行逐个绑定,当发现需要绑定的IP地址不存在时,将会触发上述异常,从而导致无法正常启动
解决方案:
修改C:\Windows\System32\drivers\etc\hosts配置文件
将192.168.20.43 localhost 修改为192.168.20.146 localhost