Java Web StartアプリケーションのJNLPファイルには<resources>
の<extension href="...">
タグが含まれていて、2番目のJNLPファイルを参照しています。これまではこれまで何の問題もなかった(私は思う)。古くなったJNLPファイル<extension>(Java 9以降)
しかし、JNLPファイルを起動するときにJava 9(ビルド9.0.1 + 11)を使用すると、2番目のJNLPファイルで参照されているリソースの一部がロードできなくなります。これは、Java Web Startには、そのJNLPの古いバージョン(キャッシュ内)が、 "foo-1.2.jar"(これはもう存在しません)ですが、JNLPの現在のバージョンは "foo-1.3.jar"を参照しています。
これはJava 9のバグですか、それとも不足していますか?
アップデート1:これらの共通の(または共有)資源が非常に頻繁に更新されないように、私は今、わからないよ、この問題はすでにJavaの9の前にあっ
あったかもしれない場合はアップデート2:秒オン考えてみてください。多分問題は、jnlp要素にhrefを指定していないことです。最初のJNLPでは意図的に(実行時に挿入されたapplication-desc引数がリロード時に失われるため)、2番目の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 ...瓶):
<?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アプリケーションキャッシュ(キャッシュされたアプリケーションとアプレット、インストールされたアプリケーションとアプレット)を消去しようとしましたか? –
申し訳ありませんが、いいえ。私は、1000人の顧客に、キャッシュをクリアしてアプリを再び動作させる必要があることを伝えることなく、解決策を探しています。 Java 8を採用することはそれよりも優れています。 – mbee
おそらく、JNLPファイルの関連部分を表示できますか? AFAICTでは、JNLPファイルの 'version'属性で特定のバージョンを参照できます([JNLPファイル構文](http://docs.oracle.com/javase/7/docs/technotes/guides/javaws/developersguide/を参照)。 syntax.html) - 拡張要素): 'version - 追加拡張jnlpファイルのバージョン。 ' –