Java 8u102 интродуцировал bug в Java Web Start, который возникает, когда установлены 64-разрядная и 32-разрядная JRE/JDK, и для приложения требуется несколько JAR для 32/64 бит (в нашем случае это был SWT приложение, для которого требуется каждая переменная swt.jar для каждой арки).
Кажется, что вы можете обойти эту ошибку, указав ресурсы для 64-бит сначала в jnlp. Например:
<?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>
Ключ в том, что ресурсы для arch="amd64"
предстают перед ресурсами для arch="x86"
Если у вас есть приложение, которое будет работать только с 32-битной и никогда не должны работать с 64-разрядной JRE на всех, вы можете заставить javaws использовать 32-битную JRE, указав недопустимую версию j2se для 64-битного (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>
Благодарим за сообщение об этом инциденте. мы работаем над устранением этой проблемы - https://bugs.openjdk.java.net/browse/JDK-8161986. – Fairoz