还有人在使用 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。
- 创建一个启动器 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/