2010-10-05 68 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是一个根本原因。