我的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文件的版本。「 –