7

在我的公司,我们下载并启动了一个与 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

有已知的解决方法吗?

4

3 回答 3

1

这是一个安装问题,多个 JRE 的插件启动问题。使用更新的 JRE 重新安装所有插件。查看错误数据库

于 2012-12-16T10:52:17.437 回答
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.6javaws.exe就可以了)。

如果您需要更多信息,这里有一些关于 JNLP 文件格式的文档。

于 2013-04-22T07:59:56.403 回答
0

就我而言,以下方法可以解决此问题-

我需要添加“*”,这意味着将选择机器上找到的最新 1.6 JRE。出于某种原因,仅使用“1.6”对我不起作用,1.7 继续阻止启动。

于 2014-01-20T21:38:14.580 回答