如何确保在64位JVM上运行jnlp文件

7

我有一个JNLP小程序,在一台安装了32位和64位JVM的64位电脑上运行。 为了正确执行,JNLP必须在64位JVM上运行。是否有一种方法可以强制使用64位JVM?


"JNLP必须在64位JVM上运行才能正确执行。" 为什么? - Andrew Thompson
1
@Andrew,内存!这是一个艰难的问题。还有可能是本地库等。 - bestsss
@bestsss 谢谢,但我不想听路人的猜测。我需要来自原帖作者的具体答案。 - Andrew Thompson
@Andrew,所以请提出一个新的问题。但说真的,为什么并不重要,JNI/JNA/内存限制在64位上是非常不同的,文件映射的最大虚拟内存也是如此。 - bestsss
3个回答

1

使用-d64虚拟机选项, 仅允许虚拟机在64位模式下启动。否则将无法启动,虽然不太友好但能完成工作。在控制台模式下打印:

Error: This Java instance does not support a 32-bit JVM.
Please install the desired version.

-d64自1.5.0版本开始得到支持。


1
请使用"-d64"(在Oracle文档中,-D64是错误的,大写的-D用于定义环境变量)作为JVM选项传递它,请将其作为"-J-d64"传递。 - verdy_p
-d64和-D64具有不同的含义,因为它们区分大小写。 - Daniel De León

0

1
这些技术中唯一接近在JNLP文件中工作的是os.arch测试。OP需要一个所有64位os.arch值的列表。(至少有两个常见架构的"xmd64"和"amd64"。) - Ted Hopp

0

如果您使用64位浏览器,则使用64位JVM。如果您使用32位浏览器(这是大多数浏览器的默认设置),则使用32位JVM。例如,Firefox和Chrome只有32位版本(当然,有test/develop版本,但没有官方版本)。微软的IE是为数不多的几个提供两个版本的浏览器之一。

您无法确保jnlp在64位环境中运行。但是,您可以确保在您的小程序代码中,它已在正确的环境中启动:

String architecture = System.getProperty("os.arch");

if(architecture.equals("i386") || architecture.equals("i686")){
 architecture = "x86";
}
else if(architecture.equals("amd64") || architecture.equals("universal")){
 architecture = "x86_64";
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接