在我的公司,我们下载并启动与JRE 1.6.0_20绑定的JNLP应用程序。我们使用系统缓存功能下载JAR。
当我们在PC上安装JRE 1.7时,WebStart无法启动。当我们启用日志时,我们会看到以下异常:
java.lang.ExceptionInInitializerError
at com.sun.deploy.net.protocol.https.Handler.openConnection(Unknown Source)
at java.net.URL.openConnection(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.createUrlConnection(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doGetRequestEX(Unknown Source)
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCachedFile(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassCastException: sun.security.ssl.X509TrustManagerImpl cannot be ast to com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager
at com.sun.deploy.security.X509ExtendedDeployTrustManager.<init>(Unknown Source)
at com.sun.deploy.net.protocol.https.Handler$Initializer$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.deploy.net.protocol.https.Handler$Initializer.<clinit>(Unknown Source)
... 16 more
是否有已知的解决方法?
答案 0 :(得分:1)
这是一个安装问题,多个JRE的插件启动问题。使用更新的JRE重新安装所有插件。 See bug database
答案 1 :(得分:1)
这可能不适用于您的情况,但我找到了解决此问题的解决方案。我修改了JNLP文件以指定要使用的JRE。在我们的例子中,JNLP文件具有以下内容:
<j2se java-vm-args="-Xmx512m -Dsun.java2d.noddraw=true" version="1.6+"/>
显然,“1.6+
”允许在1.7下执行。所以我删除了“+
”,如下所示:
<j2se java-vm-args="-Xmx512m -Dsun.java2d.noddraw=true" version="1.6"/>
现在应用程序运行正常。如果您可以更改通过应用程序URL提供的JNLP文件,那将是最好的。在我们的例子中,这不是一个选项(JNLP来自第三方软件包),所以我下载了JNLP,编辑了它,现在我们通过双击修改后的.jnlp文件启动应用程序(或运行1.6 javaws.exe
就可以了。)
如果您需要更多信息,请some documentation on the JNLP file format。
答案 2 :(得分:0)
在我的情况下,以下工作解决了这个问题 -
我需要添加'*',这意味着将在机器上找到最新的1.6 JRE。出于某种原因,仅仅使用'1.6'对我来说不起作用,1.7继续阻止发射。