Tomcat : java.net.BindException: 地址已被使用: JVM_Bind
Tomcat : java.net.BindException: Address already in use: JVM_Bind
我在 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
怎么了?这是我公司的电脑,有什么服务,代理阻止我 运行ning 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
失败不是由 HTTP 连接器侦听的端口引起的,而是 "shutdown" 端口(通常是 8005
),该端口已被占用.
您可以使用 <Server>
元素的 port
属性对其进行配置:
<Server port="8005" shutdown="SHUTDOWN">
...
</Server>
在大多数情况下,将值设置为 -1
禁用它是安全的。这也将消除安全威胁:攻击者可以通过将字符 SHUTDOWN
发送到端口 8005
.
来关闭服务器
我在 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
怎么了?这是我公司的电脑,有什么服务,代理阻止我 运行ning 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
失败不是由 HTTP 连接器侦听的端口引起的,而是 "shutdown" 端口(通常是 8005
),该端口已被占用.
您可以使用 <Server>
元素的 port
属性对其进行配置:
<Server port="8005" shutdown="SHUTDOWN">
...
</Server>
在大多数情况下,将值设置为 -1
禁用它是安全的。这也将消除安全威胁:攻击者可以通过将字符 SHUTDOWN
发送到端口 8005
.