JRE 8u171 无法使用 Java Web Start 离线模式

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

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

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

直到 jre8u161 为止工作正常。但是对于当前的更新 171 和 172,应用程序将无法在离线模式下启动。

如果我用 Java 缓存查看器强制它进入离线模式,我会得到异常:

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 Offlinebetrieb nicht verfü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>

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

我还能做什么?

最佳答案

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

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

无法通过 8-171 java 更新以离线模式启动 JNLP。

用于桌面快捷方式启动 解决方法之一是(这只是一个技巧) 1. 创建 2 个不同的 jnlp,一个用于 java 8-171,另一个用于在离线模式下为其他 java 版本启动 jnlp。

  1. 创建一个启动器 jnlp 应用程序,它检测本地客户端上的 java 版本并启动相应的 jnlp。

(我目前正在处理完成后会更新代码)

在 JNLP 中使用这个配置

Java 8 171

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

JAVA 其他版本

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

关于JRE 8u171 无法使用 Java Web Start 离线模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50058869/

相关文章:

java - Tomcat 上的 ReactJS 应用程序

java - 删除的对象将通过级联重新保存

java - 表示 map 并在其上运行 A*

java - 我可以禁止 Java Web Start 中的加载对话框吗?

java - 从另一个 Java 应用程序获取日志

java - 如何使用 jobscheduler 将 jobworkitem 排入队列

自 JDK 1.7 以来,Java Web Start 已损坏

java - jnlp 控制台语句重定向到服务器

java - 通过 JWS 和生成的 JNLP 部署 Java 应用程序