我有一个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)
您可以制作一个支持这两种体系结构的 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 版本