當我使用JNLP啓動富客戶端應用程序時,它會向遠程服務器發送一些請求。其中一些請求旨在檢查服務器是否可用。如果它們不可用,則客戶端捕獲到,例如UnknownHostException
,這是一個完全有效且預期的情況。在UnknownHostException的情況下啓動時爲空錯誤對話框
但是,如果我一個Java控制面板(Windows的>開始 - >設置 - >控制面板 - > Java的),我獲得以下的啓動錯誤對話框中指定代理服務器設置:
由於你可以看到,這個對話框完全沒用,它無助於找出錯誤。此外,我試圖在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
拋出UnknownHostException
或ConnectTimeoutException
這裏。
如果我在「Java控制面板 - >網絡設置」對話框中打開「直接連接」,則問題不可重現,但問題在於使用直接連接並非總是可行,有時需要代理。
我發現這個問題在Java 1.6上不可重現,但不幸的是我必須以某種方式解決它,而無需升級。我知道這是一個非常奇怪的問題,看起來更像是JVM中的一個bug,但我希望你可以給我一些建議,以某種方式來抑制這些惱人的對話。