我的Java Web Start应用程序的JNLP文件包含<extension href="...">
标签在<resources>
引用第二JNLP文件,这反过来又引用我们说的公共资源。直到现在没有问题(我认为)。为<extension>陈旧的JNLP文件(因为Java的9?)
但是,在启动JNLP文件时,使用Java 9(build 9.0.1 + 11)时,第二个JNLP文件中引用的某些资源无法加载,因为它们不再存在。这是因为Java Web Start仍然具有该JNLP(在其缓存中)的陈旧版本,其引用例如“foo-1.2.jar”(不再存在),而当前版本的JNLP引用“foo-1.3.jar”。
这是Java 9的错误还是我错过了什么?
更新1:不更新由于这些共同的(或共享)的资源,很多时候,我现在不能确定,如果可能已经存在的Java 9.前
更新2这样的问题:在第二想想,也许问题是我没有在jnlp元素上指定href。在第一个JNLP中有意(因为在运行时插入了应用程序参数,在重载时会丢失),这在第二个JNLP中是偶然的。
第一JNLP看起来像这样(请注意扩展元素):
<?xml version='1.0' encoding='UTF-8' ?>
<jnlp
spec="6.0+"
codebase="https://example.com/158"
>
...
<update check="timeout" policy="always"/>
<resources>
<java version="9.*" java-vm-args="-Xmx800m --add-opens=java.desktop/java.awt=ALL-UNNAMED --add-opens=java.desktop/sun.awt.dnd=ALL-UNNAMED --add-opens=java.desktop/sun.swing=ALL-UNNAMED" href="http://java.sun.com/products/autodl/j2se"/>
<java version="1.8*" java-vm-args="-Xmx800m" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="foo-20171018-client.jar" main="true"/>
<extension href="https://example.com/shared/shared.jnlp"/>
</resources>
<application-desc main-class="foo.bar.Baz"><argument>sessionKey</argument><argument>12</argument></application-desc>
</jnlp>
第二JNLP看起来是这样的(引用foo的... JAR):
<?xml version='1.0' encoding='UTF-8' ?>
<jnlp
spec="6.0+"
codebase="https://example.com/shared"
>
...
<update check="timeout" policy="always"/>
<resources>
<java version="9.*" java-vm-args="-Xmx800m --add-opens=java.desktop/java.awt=ALL-UNNAMED --add-opens=java.desktop/sun.awt.dnd=ALL-UNNAMED --add-opens=java.desktop/sun.swing=ALL-UNNAMED" href="http://java.sun.com/products/autodl/j2se"/>
<java version="1.8*" java-vm-args="-Xmx800m" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="foo-1.3.jar"/>
<jar href="jhall-2.0.02.jar"/>
<jar href="jmf-2.1.1.e.jar"/>
<jar href="forms-1.2.jar"/>
</resources>
<component-desc/>
</jnlp>
您是否尝试清除Java应用程序缓存(缓存的应用程序和小程序,已安装的应用程序和小程序)? –
对不起,但没有。我正在寻找一种解决方案,而无需告诉一千个客户,他们现在必须清除缓存以便让我的应用程序再次运行。即使坚持使用Java 8也比这更好。 – mbee
也许你可以向我们展示JNLP文件的相关部分? AFAICT,您可以使用JNLP文件的'version'属性来引用特定的版本(参见[JNLP文件语法](http://docs.oracle.com/javase/7/docs/technotes/guides/javaws/developersguide/) syntax.html) - 扩展元素):'版本 - 附加扩展jnlp文件的版本。“ –