[Tomcat/Java EE/Linux]Tomcat启动异常:StandardServer.await: create[localhost:8005]: java.net.BindException: 无法指定被请求的地址

1 问题背景

  • 部门新成员小J在一台虚拟机(ip:192.168.191.96)内安装部署部门的数据治理产品(含: 20余个微服务模块 + 1套(用户)基础管理系统BMS)。
  • 小J启动BMS的Tomcat时,屡次报此错:StandardServer.await: create[localhost:8005]: java.net.BindException: 无法指定被请求的地址
严重: StandardServer.await: create[localhost:8005]:
java.net.BindException: 无法指定被请求的地址
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:382)
    at java.net.ServerSocket.bind(ServerSocket.java:375)
    at java.net.ServerSocket.<init>(ServerSocket.java:237)
    at org.apache.catalina.core.StandardServer.await(StandardServer.java:444)
    at org.apache.catalina.startup.Catalina.await(Catalina.java:781)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:727)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:4
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428)

2 原因分析

create[localhost:8005]:入手,可分析出2类情况:

  • 情况1(端口角度):8005 端口是否被占用 (排查结论:8005端口未被占用)
  • 情况2(域名角度): localhost 域名是否解析正确 (结论: localhost 域名解析错误;hosts文件中无localhost的ip与域名的映射配置)
    未修正localhost的域名IP映射配置前:↓

然后,查看了一下hosts文件,确实没有配置host的域名映射,说明了:这里ping出来的的localhostsip是虚拟机所处网络的更上一级(乃至更上上一级网络)网络的DNS服务器解析出的IP地址。

已修正localhost的域名IP映射配置后:↓

3 解决方法

  • step1 修改 hosts文件中 localhost 域名的IP映射配置
vi /etc/hosts
  192.168.191.96 localhost
  (或: 127.0.0.1 localhosts)
  • step2 重启 tomcat 即可

X 参考文献

posted @ 2021-06-10 19:23  千千寰宇  阅读(944)  评论(0编辑  收藏  举报