【问题标题】:Tomcat : java.net.BindException: Address already in use: JVM_BindTomcat:java.net.BindException:地址已在使用:JVM_Bind
【发布时间】:2021-08-26 20:42:34
【问题描述】:

我在 Windows10 上并下载了 Tomcat 8.5

我进入 conf 文件夹并运行 startup.bat 脚本

几秒钟后,Tomcat 停止。在日志中我可以看到:

09-Jun-2021 21:52:01.433 INFOS [main] org.apache.coyote.AbstractProtocol.start Démarrage du gestionnaire de protocole ["http-nio-8088"]
09-Jun-2021 21:52:01.484 INFOS [main] org.apache.catalina.startup.Catalina.start Server startup in 748 ms
09-Jun-2021 21:52:01.491 GRAVE [main] org.apache.catalina.core.StandardServer.await StandardServer.await: create[localhost:8005]: 
    java.net.BindException: Address already in use: JVM_Bind
        at java.net.DualStackPlainSocketImpl.bind0(Native Method)
        at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:102)
        at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:513)
        at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:180)
        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:421)
        at org.apache.catalina.startup.Catalina.await(Catalina.java:776)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:722)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)

我知道我可以更改server.xml 文件中的端口(我这样做了)。 我的问题是无论我选择什么端口(8081、8082、8083 等...)我总是收到此错误:

java.net.BindException: Address already in use: JVM_Bind

怎么了?这是我公司的一台电脑,是否有一些服务、代理阻止我运行 Tomcat?

我选择的端口是免费且可用的。在尝试使用空闲端口(例如 8087)启动 Tomcat 后,我​​在命令行上得到了这个:

C:\tools\apache-tomcat-8.5.66\bin>netstat -ano | find "8087"
  TCP    [fd5e:b41f:967b:1007:eca0:11ba:a1c9:bbbf]:58009  [fd5e:b41f:967b:1007:eca0:11ba:a1c9:bbbf]:8087  TIME_WAIT       0

【问题讨论】:

    标签: java sockets tomcat port bind


    【解决方案1】:

    失败不是由于 HTTP 连接器侦听的端口,而是 "shutdown" 端口(通常是 8005),该端口已被占用。

    您可以使用&lt;Server&gt; 元素的port 属性对其进行配置:

    <Server port="8005" shutdown="SHUTDOWN">
    ...
    </Server>
    

    在大多数情况下,将值设置为-1 禁用它是安全的。这也将消除安全威胁:攻击者可以通过将字符 SHUTDOWN 发送到端口 8005 来关闭服务器。

    【讨论】:

    • 谢谢你是正确的。顺便说一句,Windows10 上似乎经常使用“8005”。
    猜你喜欢
    • 1970-01-01
    • 2015-10-30
    • 2011-02-15
    • 2018-01-02
    • 1970-01-01
    • 2018-03-12
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多