2016-07-28 6 views
2

Наши клиенты частично оснащены JRE x86 и x64, установленными параллельно. JNLP запускается в Windows по умолчанию в HKEY Classes Root JNLPFile. Однако это показывает путь x86 или x64.Запуск приложения JNLP с существующей установкой JRE x86 и x64?

Если это приложение x86, и приложение запускается с помощью x64 javaws, управляющего веб-сайтом x64 javaws, это изменение на путь x86?

Атрибут «арка» не имеет никакого эффекта и chrashs приложения при запуске.

ответ

2

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> 
+0

Благодарим за сообщение об этом инциденте. мы работаем над устранением этой проблемы - https://bugs.openjdk.java.net/browse/JDK-8161986. – Fairoz