当我使用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,但我希望你可以给我一些建议,以某种方式来抑制这些恼人的对话。