2009-12-25 79 views
0

我在eclipse中爲我的Java項目運行了一些JUnit 4測試,我知道它在兩天前運行時沒有任何問題。JUnit測試以網絡連接錯誤結束

但是,今天我得到的錯誤:

Could not connect to: : 40212   
java.net.SocketException: Network is unreachable 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) 
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 
    at java.net.Socket.connect(Socket.java:525) 
    at java.net.Socket.connect(Socket.java:475) 
    at java.net.Socket.<init>(Socket.java:372) 
    at java.net.Socket.<init>(Socket.java:186) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.connect(RemoteTestRunner.java:570) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:381) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

無論是測試還是代碼做一些網絡。

此外,用於安裝新軟件的eclipse對話框無法連接到更新站點,SVN插件也無法連接到存儲庫。 SVN存儲庫是可到達的,我已經檢查了cli-svn程序。 eclipse中的代理被禁用。

所以我的問題是,爲什麼JUnit想要首先連接到互聯網(應該怎麼離線工作,甚至是可能的..),我可以做些事情來找到問題的根源? (我的計劃B是刪除日食並重新安裝它)

+0

如果是單元測試,爲什麼它連接到互聯網? – Esko 2009-12-25 14:00:43

回答

3

我懷疑Junit作爲一個單獨的進程在同一臺機器上啓動(請注意上面的RemoteTestRunner的引用),然後Eclipse將通過套接字與它通信。

所以在你的機器上有一些與你的TCP堆棧有關的問題。你沒有網絡資源?是什麼東西佔據了這些?

netstat可能在這裏使用。或者也許簡單的重啓?

+0

我無法解決問題,我嘗試使用另一個Eclipse安裝,我刪除並重新安裝了一些Java包,嘗試了不同的工作空間,但沒有任何幫助。我現在在虛擬機上使用eclipse(我知道這很醜陋,但我需要完成一些工作)。不過,你確實回答了我爲什麼要使用網絡的問題。 – arsenbonbon 2009-12-26 14:53:12

+1

今天我遭受同樣的問題。你有沒有機會使用Debian?如果是這樣,那麼這與bug http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=560238和http://bugs.debian.org/cgi-bin/bugreport.cgi?bug有關= 560056,可以通過在/etc/sysctl.d/bindv6only.conf中設置net.ipv6.bindv6only = 1來修復。 – Confusion 2010-01-05 13:31:57

+0

@Confusion:非常感謝您的研究和分享。一個更正:您應該將它設置爲0而不是1.可執行修復程序: 「」「」「」「」「」「」「 $ sudo sed -i's/net.ipv6.bindv6only \ = \ 1/net .ipv6.bindv6only \ = \ 0 /'\ /etc/sysctl.d/bindv6only.conf && sudo invoke-rc.d procps restart「」「」「」「」「」「」「 另外:你想要嗎?提高你的入場作爲一個正確的答案?對我來說,這將是勝利之一。 – inger 2010-01-12 09:18:43

0

您是否嘗試過在您試圖執行的測試中查看「運行配置」? (即右鍵單擊測試,然後選擇「運行方式」>「運行配置」)也許有些設置已經有點過時了。也許在「測試」選項卡中出現了錯誤配置的「Test runner」設置?

2

回答這個問題:「爲什麼Eclipse的要連接到Internet」是Eclipse不連接到互聯網可言,但是Eclipse的具有特殊的JUnit測試監聽器與JVM上運行的通信JUnit測試。這個測試監聽器在本地主機上打開一個套接字(我並不是100%確定服務器套接字是在哪一邊,但這可能並不重要)。

我認爲你的一端有一些網絡問題,阻止Eclipse進程在本地主機上打開套接字。在啓動/關閉VPN後以及從暫停/恢復週期返回後,我遇到過類似的麻煩。

我想先嚐試重新啓動。如果這不起作用,我會嘗試從不同的工作區運行(運行.../eclipse.exe -data path/to/new/workspace)。請記住,在卸載 Eclipse時,沒有任何意義。只需在某處解壓新的Eclipse,然後嘗試從那裏運行。

+0

提示+1。你可能是正確的暫停/恢復週期。我只是沒有時間去做更多的工作,請看我上面的評論。 – arsenbonbon 2009-12-26 14:55:12

+0

如果你確實知道這是什麼原因,我很樂意聽到它。 – JesperE 2009-12-26 21:24:51

0

在我的Windows 7 x64機器上,我用一個單獨的防火牆阻止javaw.exe出於某種奇怪的原因,解除阻塞後,它再次工作。沒想到防火牆也會阻塞機器內部套接字的通訊