簡體   English   中英

將JNLP修復為JRE 1.6並安裝JRE 1.7時,Java WebStart啟動失敗

[英]Java WebStart launch fails when a JNLP is fixed to JRE 1.6 and JRE 1.7 is installed

在我的公司,我們下載並啟動了一個與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

有一個已知的解決方法嗎?

這是一個安裝問題,多個JRE的插件啟動問題。 使用更新的JRE重新安裝所有插件。 查看bug數據庫

這可能不適合您的情況,但我找到了解決此問題的解決方案。 我修改了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就可以了)。

如果您需要更多信息,請參閱以下有關JNLP文件格式的文檔

在我的情況下,以下工作解決了這個問題 -

我需要添加'*',這意味着將在機器上找到最新的1.6 JRE。 出於某種原因,僅使用'1.6'對我來說不起作用,並且1.7繼續阻止發布。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM