2016-07-28 4 views
2

お客様は、JRE x86とx64を部分的に並列にインストールしています。 JNLPは、デフォルトでHKEY Classes Root JNLPFileでWindows上で起動します。ただし、x86パスまたはx64パスのいずれかが表示されます。既存のJRE x86とx64をインストールしたJNLPアプリケーションを起動しますか?

x86アプリケーションで、x64 javawsを制御してアプリケーションを起動すると、x64 javaws webstartがx86パスに変更されますか?

属性「アーチ」は何の効果と、起動時にアプリケーションchrashsを持っていません。

答えて

2

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

この問題を報告していただきありがとうございます。私たちはこの問題を解決するために取り組んでいます - https://bugs.openjdk.java.net/browse/JDK-8161986。 – Fairoz

関連する問題