在Windows 64上以32位模式运行Java

lvi*_*ani 5 java jvm 32bit-64bit

我需要在Windows 8.1 64位下以32位模式运行Java。

我已经在c:\Program Files\Java\jre7(64bit JVM)和c:\Program Files (x86)\Java\jre7(32bit JVM)下安装了Java 7 jre 。

但是,如果从cmd我发出,则会出现java -d32 -version此错误:

Error: This Java instance does not support a 32-bit JVM.
Please install the desired version.
Run Code Online (Sandbox Code Playgroud)

如果没有该-d32开关,它将确认其运行的是64位JVM:

Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
Run Code Online (Sandbox Code Playgroud)

因此,我打开了Java控制面板,并将32位JVM添加到了用户安装的JRE中(即使以管理员身份运行,“系统”选项卡也不允许我进行任何更改),但没有任何更改。

我读过一些用户的帖子,说Java 7+ -d32应该支持该模式,但我不明白。有谁可以帮助我吗?

注意:请注意,我无法删除64位JVM,因为其他应用程序需要它

Rea*_*wTo 5

根据此常见问题解答

如何在 32 位和 64 位操作之间进行选择?默认是什么?

选项 -d32 和 -d64 已添加到 Java 启动器中,以指定程序是在 32 位还是 64 位环境中运行。在 Solaris 上,它们分别对应于 ILP32 和 LP64 数据模型。由于 Solaris 在同一 Java 安装中同时包含 32 位和 64 位 J2SE 实现,因此您可以指定任一版本。如果 -d32 和 -d64 均未指定,则默认为在 32 位环境中运行。其他 Java 命令(javac、javadoc 等)很少需要在 64 位环境中执行。但是,-d32/-d64 选项可以传递给这些命令,然后使用已建立的 -J 前缀选项(例如:-J-d64)传递给 Java 启动器。
所有其他平台(Windows 和 Linux)都包含单独的 32 位和 64 位安装包。如果两个软件包都安装在一个系统上,您可以通过将适当的“bin”目录添加到您的路径中来选择其中一个。为了保持一致性,Linux 上的 Java 实现接受 -d64 选项。


lvi*_*ani 3

我找到了另一种解决方案。通过使用launchj4,我可以将 jar 包打包到 exe 中,并且可以指定要使用的 JRE,并强制它搜索 32 位 JVM、设置最小和最大版本等(请参阅 JRE)。包装器将自动搜索已安装的 JRE 并选择满足要求的 JRE。

另外,将我的 jar 包打包成 exe 可以更方便地部署我的应用程序。