有人仍然使用Java Web启动吗?好吧,我必须这样做。
我有一个需要在线和离线模式下运行的应用程序。在线获取更新,但实际用例是离线的。
直到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 Nichtverfü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 171https://bugs.openjdk.java.net/browse/jdk-8203272
这是在Java的后期版本中修复的(能够以Java 10在离线模式下启动JNLP(
无法使用8-171 Java Update以外线模式启动JNLP。
用于桌面快捷方式启动周围的工作之一就是(这只是一个黑客(1.为Java 8-171创建2个不同的JNLP一个,另一个用于其他Java版本的脱机模式下的JNLP。
- 创建一个启动器JNLP应用程序,该应用在客户端本地检测Java的版本并启动相应的JNLP。
(我当前正在处理它会在完成后更新代码(
在JNLP中使用此配置
Java 8 171
<offline-allowed/>
<shortcut>
<desktop/>
</shortcut>
Java其他版本
`<offline-allowed/>
<shortcut online="false">
<desktop/>
</shortcut>`