Tomcat启动失败可能是由于Linux网络设置:java.net.BindException:无法分配请求的地址

时间:2013-06-05 18:42:16

标签: java linux networking

由于粘贴的堆栈跟踪,我无法启动tomcat,我不相信答案是用Java编写的。 我尝试更改端口并确认另一个端口(8005)也失败并显示相同的错误消息。 如何验证我的linux网络设置是否允许Java使用端口?

EDIT2:看来这个盒子一直是入侵的受害者。我认为将此帖子标记为主持人关闭是有道理的,因为预期受损的盒子无法正常运行。感谢大家的时间和精力。

编辑: / bin中的包的损坏可能是负责任的。我不得不用up2date更新一些。

额外信息:

Re:类似问题,我通过检查netstat消除了JVM_BIND的可能性。

ping localhost只是挂起:


$ ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
-- no responses ---
--- localhost ping statistics ---
9 packets transmitted, 0 received, 100% packet loss, time 8000ms

ping谷歌工作:


$ ping google.com
PING google.com (74.125.225.228) 56(84) bytes of data.
-- responses removed ---
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 1.389/1.417/1.443/0.048 ms, pipe 2

例外:


    SEVERE: StandardServer.await: create[8036]:
java.net.BindException: Cannot assign requested address
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.PlainSocketImpl.bind(Unknown Source)
        at java.net.ServerSocket.bind(Unknown Source)
        at java.net.ServerSocket.(Unknown Source)
        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(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Jun 5, 2013 12:49:05 PM org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8035
Jun 5, 2013 12:49:05 PM org.apache.catalina.connector.Connector pause
SEVERE: Protocol handler pause failed
java.net.SocketException: Invalid argument or cannot assign requested address
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(Unknown Source)
        at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.SocksSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.(Unknown Source)
        at java.net.Socket.(Unknown Source)
        at org.apache.jk.common.ChannelSocket.unLockSocket(ChannelSocket.java:492)
        at org.apache.jk.common.ChannelSocket.pause(ChannelSocket.java:289)
        at org.apache.jk.server.JkMain.pause(JkMain.java:725)
        at org.apache.jk.server.JkCoyoteHandler.pause(JkCoyoteHandler.java:153)
        at org.apache.catalina.connector.Connector.pause(Connector.java:1029)
        at org.apache.catalina.core.StandardService.stop(StandardService.java:566)
        at org.apache.catalina.core.StandardServer.stop(StandardServer.java:744)
        at org.apache.catalina.startup.Catalina.stop(Catalina.java:648)
        at org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:692)

4 个答案:

答案 0 :(得分:8)

我觉得您的/etc/host配置不正确。你能ping 127.0.0.1吗?还要确保主机文件中有以下行

<强>的/ etc /宿主

127.0.0.1           localhost

请检查您的“The Loopback Interface”是否设置正确。

答案 1 :(得分:1)

“java.net.BindException:无法分配请求的地址”建议另一个Tomcat实例没有正确关闭,并且仍在使用您分配给tomcat的端口。

答案 2 :(得分:1)

来自user1628502的回答是正确的。另一个实例正在运行且正在使用此地址,请终止该进程并尝试再次运行服务器。你是以root身份运行的吗?然后服务器使用的所有端口和资源将被解除绑定并在服务器关闭/关闭时自动释放。在用户的情况下,当您没有正确关闭服务器时,地址仍然是绑定的,这可能是您的pblm。

重启系统&amp;尝试以root用户身份运行

答案 3 :(得分:0)

如果您已经验证没有其他进程使用与为Tomcat配置的端口相同的端口,则需要立即验证您的网络配置。

检查您的/etc/host文件是否包含localhost的多个条目。如果是,请验证列出的IP地址是否实际分配给您的计算机。如果没有,请使用您当前的IP地址删除或更新这些条目。