2012-06-27 94 views
0

我正在使用Groovy 1.8.6,在JDK 1.6.0u33上運行。當我的程序啓動時,它會嘗試通過連接到主機地址上的Telnet端口來連接到同一主機上的另一個進程。它使用標準Java類InetAddress來確定本地主機地址。但是,由於某種原因,當我在Windows XP虛擬機上啓動該程序時,主機地址解析爲垃圾並且連接失敗。java.net.InetAddress獲取本地主機地址錯誤(WinXP)

啓動腳本包括這一行診斷信息: def serverAddress = "http://${InetAddress.localHost.hostAddress}:${config.ServerPort}/DigitizerService?wsdl"

serverAddress時被打印到終端的輸出是: http://0.1.0.5:8989/DigitizerService?wsdl

地址不總是各項─另一時間它出來如0.2.0.5。但它總是作爲一個甚至不是有效地址的東西出現,更不用說這個主機的實際地址了。

這個相同的代碼庫正在生產大量的盒子,我從來沒有見過這樣的問題出現,所以我想它必須是特定於這個新的devbox - 或者它是一個新JDK中的錯誤。

沒有人有任何想法什麼可能導致如此基本的東西輸出垃圾?提前致謝。

+0

其他進程不在** 127.0.0.1 **上進行監聽? – jamesallman

+0

這是,但這不是重點。 java.net.InetAddress.getLocalHost()返回一個無效的IP,這與我是否可以解決問題有關。 – Johansensen

回答

0

雖然我發佈此問題之前嘗試重新啓動(當然,這是Windows畢竟),並沒有幫助,VM的第二次重新啓動似乎已解決此問題。它正在安裝大量的Windows更新,因爲它是一箇舊的虛擬機,我只是撣掉了,所以我想這可能會在操作系統內部攪亂一些東西。

所以我仍然很困惑這是怎麼回事,但我想我可以得出結論,這不是Java的錯。大概。