Java 8u102はJava Web Startでbugに変換されました。これは、64ビットおよび32ビットJRE/JDKの両方がインストールされ、アプリケーションが32/64ビット用に異なるJARを必要とする場合に発生します(このケースではSWTアプリケーションでは、各archに対して異なるswt.jarが必要です)。
jnlpで最初に64ビットのリソースを指定することで、このバグを回避できます。たとえば:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="file:///c:/jnlp" href="demo.jnlp">
<information>
<title>Demo</title>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.8+"/>
<jar href="demo.jar" />
</resources>
<resources os="Windows" arch="amd64">
<jar href="win64/swt.jar"/>
</resources>
<resources os="Windows" arch="x86">
<jar href="win32/swt.jar"/>
</resources>
<application-desc main-class="package.to.MainClass"/>
</jnlp>
キーはあなたが唯一の32ビットで動作し、64ビットのJREで実行すべきではないアプリケーションがある場合arch="amd64"
のためのリソースがarch="x86"
のためのリソースの前に現れるということです64ビットの無効なj2seバージョン(この場合は1.0.0
)を指定してjavawに32ビットJREを強制的に使用させることができます(j2seバージョンは、それが機能するためにはarch固有リソースのセクション内で指定する必要があることに注意してください) 。
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="file:///c:/jnlp" href="demo.jnlp">
<information>
<title>Demo</title>
</information>
<security>
<all-permissions/>
</security>
<resources>
<jar href="demo.jar" />
</resources>
<resources os="Windows" arch="amd64">
<j2se version="1.0.0"/>
</resources>
<resources os="Windows" arch="x86">
<j2se version="1.8+"/>
<jar href="win32/swt.jar"/>
</resources>
<application-desc main-class="package.to.MainClass"/>
</jnlp>
出典
2016-07-28 09:24:16
mth
この問題を報告していただきありがとうございます。私たちはこの問題を解決するために取り組んでいます - https://bugs.openjdk.java.net/browse/JDK-8161986。 – Fairoz