Java jnlp强制以32位版本运行

时间:2017-06-29 10:46:52

标签: java jvm jnlp

由于使用了dll,我们的Java客户端应用程序需要32位的java。 64位jvm没有选项。但是我们的客户,300多个用户,需要在他们的计算机上安装64位jvm,因为另一个应用程序需要在他们的操作系统(windows)上使用64位jvm。因此,他们必须安装32位和64位jvm。单击我们的jnlp时,它会自动运行64位jvm并且我们的程序失败。 jnlp文件中是否有任何选项/语法来强制使用特定的jvm?我不是指库或nativelibs,我的意思是当点击我们的jnlp文件时,应该启动32位jvm。

在300个客户端上编辑环境路径变量是不可能/不可行的,我们需要一个全局解决方案,只需编辑我们的jnlp文件即可。这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以通过为64位指定无效的j2se版本(下面的示例中为1.0.0)强制javaws使用32位JRE,请注意需要在特定于arch的资源部分中指定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>

请注意,这是一个“肮脏的黑客”,可能会停止使用未来版本。