【问题标题】:Java WebStart launch fails when a JNLP is fixed to JRE 1.6 and JRE 1.7 is installed当 JNLP 固定为 JRE 1.6 并且安装了 JRE 1.7 时,Java WebStart 启动失败
【发布时间】:2012-06-06 13:09:11
【问题描述】:

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

有已知的解决方法吗?

【问题讨论】:

  • 你有没有找到更多关于这个的信息?这似乎是一个已知的错误,我发现的唯一解决方法是卸载 Java 7 JRE(不过我可以保留 JDK 用于开发)。

标签: java java-7 jnlp java-web-start


【解决方案1】:

这是一个安装问题,多个 JRE 的插件启动问题。使用更新的 JRE 重新安装所有插件。 See bug database

【讨论】:

    【解决方案2】:

    这可能不适用于您的情况,但我为我们的问题找到了解决方案。我修改了 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就可以了)。

    如果您需要更多信息,这里是some documentation on the JNLP file format。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多