Java Web Start和64位JVM

问题描述:

我有一个SWT Java应用程序,我试图通过Java Web Start启动。 32位版本工作正常,但很多人无法启动64位版本。他们得到一个错误,表示无法在32位JVM上运行64位库。我搜索了Google和*等,但无法找到关于如何让Web Start在64位JVM中启动的答案。Java Web Start和64位JVM

我已经尝试使用JVM选项,(-d64,-J-d64)没有任何运气。

这是甚至可能的,或者只是我只限于32位版本(理想情况下64位是最好的,因为这个应用程序将解析大量来自日志文件的数据以干净地显示)?我需要在我的JNLP中更改哪些内容才能使其工作?

<?xml version = '1.0' encoding = 'windows-1252'?> 
<jnlp spec="1.0+" 
     codebase="http://example.com/confluence/download/attachments/212175616/" 
     href="LogMiner_64Bit.jnlp"> 
    <information> 
      <title>LogMiner 64 Bit</title> 
      <vendor> TECH</vendor> 
      <description>Parse Log messages </description> 
      <shortcut online="true"> 
       <desktop/> 
       <menu submenu="FA"/> 
      </shortcut> 
      <offline-allowed/> 
    </information> 
    <menu>64Bit</menu> 
    <security> 
      <all-permissions/> 
    </security> 
    <resources> 
      <java version="1.7+" java-vm-args="-J-d64"/> 
      <jar href="LogMiner64.jar" main="true" download="eager"/> 
    </resources> 
    <application-desc main-class="com.logMiner.ui.LogMiner"/> 
</jnlp> 

您可以创建一个支持两种体系结构的jnlp文件。例如:

<resources arch="amd64 x86_64"> 
    <jar href="LogMiner64.jar"/> 
</resources> 

<resources arch="x86 i386"> 
    <jar href="LogMiner32.jar"/> 
</resources> 

如果有必要的资源标签也可以采取一个OS属性,如os="Linux"os="Mac"os="Windows"

这样你可以有一个单一的JNLP文件,将做关于正确的事到本机库,无论用户使用何种操作系统和体系结构。

又见How to distinguish 32 bit from 64 bit java version in jnlp files

+1

是的,但这并不能帮助谁都有自己的机器在32和64位JVM用户使用可分配额外的内存。这是我试图让64位工作的主要原因。 – user2857108

+1

JNLP将使用第一个匹配资源。因此,首先使用64位的资源元素,会将第二个(32位)作为回退。当然,您可以删除32位的arch资源元素以禁止32位的JVM。 –