Java Web Start和64位JVM

use*_*108 5 java jnlp

我有一个SWT Java应用程序,我试图通过Java Web Start启动.32位版本运行良好,但许多人无法启动64位版本.他们得到一个错误,说无法在32位JVM上运行64位库.我搜索了Google和StackOverflow以及其他人,但无法找到有关如何让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>
Run Code Online (Sandbox Code Playgroud)

Dr.*_*ibo 4

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

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

<resources arch="x86 i386">
  <jar href="LogMiner32.jar"/>
</resources>
Run Code Online (Sandbox Code Playgroud)

如果需要,资源标签还可以采用 os 属性,如os="Linux"os="Mac"os="Windows"

这样,无论用户使用什么操作系统和体系结构,您都可以拥有一个 jnlp 文件,该文件将对本机库执行正确的操作。

另请参阅如何在 jnlp 文件中区分 32 位和 64 位 java 版本