5

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

EDIT2:看来这个盒子是入侵的受害者。我认为标记此帖子以供版主关闭是有意义的,因为不能期望受损的盒子正常运行。感谢大家的时间和精力。

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

额外信息:

回复:类似的问题,我通过检查 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 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

4 回答 4

9

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

/etc/主机

127.0.0.1           localhost

.

请检查您的“环回接口”是否设置正确。

于 2013-06-05T19:43:05.963 回答
2

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

于 2013-06-05T19:39:26.450 回答
1

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

重新启动系统并尝试以root用户身份运行

于 2013-06-05T19:46:55.840 回答
0

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

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

于 2013-06-05T20:32:00.910 回答