2013-06-05 32 views
4

由於粘貼堆棧跟蹤,我無法啓動tomcat,我不相信答案是在Java中。 我試着更改端口並確認另一個端口(8005)也失敗,並顯示相同的錯誤消息。 如何驗證我的Linux網絡設置是否允許Java使用端口?Tomcat啓動失敗可能是由於Linux網絡設置造成的:java.net.BindException:無法分配請求的地址

編輯2:看起來這個盒子是入侵的受害者。我認爲標誌這篇文章讓主持人關閉是有意義的,因爲妥協的文件夾無法正常運行。感謝大家的時間和精力。

編輯: 有可能在/ bin中的包損壞負責。我不得不用up2date更新幾個。

額外的信息:

回覆:類似的問題,我已經消除了通過檢查的netstat的JVM_BIND可能性。

ping本地主機只是掛起:


$ 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) 
+0

您是否在啓用SELinux的情況下運行? – VGR

+0

nope:$ sestatus SELinux狀態:已禁用 – Core

+0

我遇到了系統工程師未啓用「lo」接口的問題。我花了一段時間才意識到這一點,但未能ping通127.0.0.1是邁向正確方向的第一步。 – RockyMM

回答

1

「java.net.BindException:無法分配請求的地址」 提示Tomcat的另一個實例沒有正常關閉,仍在使用您分配給tomcat的端口。

+0

我已經確認它不是JVM_BIND,沒有運行java/tomcat實例。 – Core

8

對我而言,您的/etc/host配置不正確。你能ping通127.0.0.1嗎?另外,還要確保你有下面一行在你的主機文件

的/ etc /主機

127.0.0.1   localhost 

請檢查您的「The Loopback Interface」設置是否正確。

+0

它確實包含該條目,但正如我在主要描述中所說的,當我嘗試ping時,我沒有收到任何回覆。 – Core

+0

您沒有得到ping響應,因爲您的系統無法將主機名「localhost」解析爲任何有效的可達IP地址。添加上述條目並重新啓動您的網絡或系統。另外請確保您能ping通「127.0.0.1」 –

+0

即使條目位於主機文件中,我也無法ping 127.0.0.1。 – Core

1

來自user1628502的回答是正確的。另一個實例正在運行,並且正在使用此地址,終止該進程並嘗試再次運行服務器。你是否以root身份運行?那麼在服務器關閉/關閉時,服務器使用的所有端口和資源將被解除綁定並自動釋放。而在用戶的情況下,當你沒有正確地關閉服務器時,地址仍然是綁定的,這可能是你的pblm。

重新啓動系統&嘗試以根用戶身份

+0

沒有這樣的事情發生:[devuser @ server〜] $ ps -ef | grep -i java devuser 18463 18419 0 15:03 pts/2 00:00:00 grep -i java [devuser @ server〜] $ ps -ef | grep -i tomcat devuser 18465 18419 0 15:03 pts/2 00:00:00 grep -i tomcat – Core

+0

'tomcat'是用來運行服務器的文件名嗎?你有沒有嘗試重新啓動&根? – RahulArackal

+0

不,它顯示爲java等等等等,但我grepped兩個tomcat和Java,告訴你沒有什麼顯示,作爲根。 – Core

0

如果您已經驗證沒有其他進程正在使用同一端口配置Tomcat的運行,你現在需要驗證您的網絡配置。

檢查您的/etc/host文件是否包含localhost的多個條目。如果有,請確認列出的IP地址實際上已分配給您的機器。如果沒有,請使用您當前的IP地址刪除或更新這些條目。

+0

本地主機127.0.0.1中只列出了一個條目。 – Core

相關問題