64 비트 및 32 비트 JRE/JDK가 모두 설치되고 응용 프로그램이 32/64 비트에 대해 다른 JAR을 필요로 할 때 발생하는 Java Web Start에서 Java 8u102가 bug으로 변경되었습니다 (이 경우 우리는 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 버전을 지정하여 32 비트 JRE를 사용하는의 Javaws 강제 할 수 있습니다 (이 작동하려면이 경우 1.0.0
, 즉 J2SE 버전을 참고하면 아치 특정 리소스 섹션 내에서 지정해야합니다) . 이 사건을보고
<?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