当我使用JNLP启动富客户端应用程序时,它会向远程服务器发出一些请求。其中一些请求旨在检查服务器是否可用。如果它们不可用,则客户端会捕获,例如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中的一个错误,但我希望你可以建议我以某种方式抑制这些烦人的对话。
答案 0 :(得分:0)
看起来我终于找到了答案。 Here人遇到了与代理设置相关的非常类似的问题,只发生在Java 1.5上。我也在使用“使用自动代理配置脚本”。并且此脚本无法为我检查的某些主机返回正确的结果,因此它返回了错误。
据我所知,Java Webstart bug是根本原因。