使用JRE 8u171无法实现Java Web Start脱机模式

时间:2018-04-27 09:01:00

标签: java java-web-start jnlp offline-mode

还有人还在使用Java Web Start吗?好吧,我必须这么做。

我有一个需要在线和离线模式下运行的应用程序。在线获取更新,但实际用例处于脱机状态。

直到jre8u161工作正常。但是使用当前的更新171和172,应用程序将无法在脱机模式下启动。

如果我使用Java Cache Viewer强制它进入离线模式,我会得到例外:

com.sun.deploy.net.FailedDownloadException: Ressource kann nicht heruntergeladen werden. System ist offline. (Resource can not be downloaded. System is offline.)
    at com.sun.deploy.cache.ResourceProviderImpl.checkUpdateAvailable(Unknown Source)
    at com.sun.deploy.cache.ResourceProviderImpl.isUpdateAvailable(Unknown Source)
    at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
    at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
    at com.sun.deploy.model.ResourceProvider.getResource(Unknown Source)
    at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source)
    at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.launch(Unknown Source)
    at com.sun.javaws.Main.launchApp(Unknown Source)
    at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
    at com.sun.javaws.Main.access$000(Unknown Source)
    at com.sun.javaws.Main$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

如果我用javaws -offline <jnlp-file>启动它,我会收到消息“Anwedung im Offlinebetriebnichtverfügbar”(离线模式下的应用程序不可用)。

我用这个jnlp文件创建了一个最小的应用程序:

<jnlp spec="7.0" codebase="<URL>" href="<jnlp-file>"
  <information>
    <title>Base Test</title>
    <offline-allowed/>
  </information>
  <security>
    <all-permissions/>
  </security>
  <resources>
    <jar href="<jar-file>"/>
  </resources>
  <application-desc main-class="test.BaseTest"/>
</jnlp>

但这也不会在离线模式下启动。

我还能做什么?

1 个答案:

答案 0 :(得分:1)

这是JDK 8 171的已知错误 https://bugs.openjdk.java.net/browse/JDK-8203272

这在JAVA的更高版本中得到修复(能够在离线模式下使用java 10启动jnlp)

无法在离线模式下使用8-171 java更新启动JNLP。

FOR DESKTOP SHORTCUT LAUNCH 其中一项工作是(它只是一个黑客) 1.为java 8-171创建2个不同的jnlp,为其他java版本创建另一个用于在离线模式下启动jnlp。

  1. 创建一个启动器jnlp应用程序,该应用程序检测客户端本地的java版本并启动相应的jnlp。
  2. (我目前正在处理它将在完成后更新代码)

    在JNLP中使用此配置

    JAVA 8 171

              <offline-allowed/>
               <shortcut>
                <desktop/>
               </shortcut>
    

    JAVA OTHER版

              `<offline-allowed/>
               <shortcut online="false">
                 <desktop/>
               </shortcut>`