2010-10-05 75 views
0

當我使用JNLP啓動富客戶端應用程序時,它會向遠程服務器發送一些請求。其中一些請求旨在檢查服務器是否可用。如果它們不可用,則客戶端捕獲到,例如UnknownHostException,這是一個完全有效且預期的情況。在UnknownHostException的情況下啓動時爲空錯誤對話框

但是,如果我一個Java控制面板(Windows的>開始 - >設置 - >控制面板 - > Java的),我獲得以下的啓動錯誤對話框中指定代理服務器設置:

alt text

由於你可以看到,這個對話框完全沒用,它無助於找出錯誤。此外,我試圖在Java控制檯中將跟蹤級別設置爲5,但它也未向我提供任何有用的信息。

該對話框與在啓動應用程序內捕獲的異常一起出現。我重複它在被HttpClient實例(commons-httpclient-3.1)拋出後立即被捕獲到,並且該對話不被應用程序顯示(此外,它具有完全不同的look'n'feel)。 下面是從代碼報價:

try { 
     HttpClient client = new HttpClient(connectionManager); 
     GetMethod getMethod = new GetMethod(); 
     getMethod.setPath(targetUrl.getPath()); 
     HostConfiguration hostConfiguration = getHostConfiguration(); 
     client.executeMethod(hostConfiguration, getMethod); 
    } catch (Exception e) { 
     // some logging 
    } 

executeMethod拋出UnknownHostExceptionConnectTimeoutException這裏。

如果我在「Java控制面板 - >網絡設置」對話框中打開「直接連接」,則問題不可重現,但問題在於使用直接連接並非總是可行,有時需要代理。

我發現這個問題在Java 1.6上不可重現,但不幸的是我必須以某種方式解決它,而無需升級。我知道這是一個非常奇怪的問題,看起來更像是JVM中的一個bug,但我希望你可以給我一些建議,以某種方式來抑制這些惱人的對話。

回答

0

看起來我終於找到了答案。 Here傢伙經歷了與代理設置相關的非常類似的問題,並且僅發生在Java 1.5中。我也在使用「使用自動代理配置腳本」。而且這個腳本無法爲我檢查的一些主機返回正確的結果,所以它返回一個錯誤。

據我所知,Java Webstart bug是一個根本原因。