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

6

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

我已经安装了Java 7 JRE,分别安装在c:\Program Files\Java\jre7(64位JVM)和c:\Program Files (x86)\Java\jre7(32位JVM)。

但是,如果我在cmd中输入java -d32 -version,就会出现以下错误:

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

如果没有使用-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)

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

我读过一些用户的帖子,他们说在Java 7+中应支持-d32模式,但我无法得到它。

注意:请注意,我不能删除64位JVM,因为我需要它来运行其他应用程序。


你出于好奇心需要那个吗? - fge
因为我的应用程序嵌入了需要使用插件的浏览器控件,该插件目前只支持32位模式,所以我需要在32位模式下使用SWT。 - lviggiani
你是否有机会不在命令行中运行它?也就是说,你尝试在集成开发环境中运行过吗? - ChiefTwoPencils
是的,我可以从Eclipse中将其添加到可用的JRE并使用它。但是从cmd中,只能通过添加32位jre的完整路径来实现。 - lviggiani
5个回答

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

3
我找到了另一个解决方案。 通过使用launchj4,我可以将我的jar包装成exe,并指定我想要使用的JRE,强制它搜索32位JVM,设置最小和最大版本等(请参见JRE)。 包装器会自动搜索已安装的JRE并选择符合要求的版本。
此外,将我的jar包装成exe更方便部署我的应用程序。

考虑进一步提供一个捆绑的运行时,就像launch4j所提供的那样;这样你就完全摆脱了客户端上的运行时安装状态。缺点是你需要为不同的操作系统提供不同的下载包。 - Gimby
你有哪些launch4j的XML设置?我现在也遇到了同样的问题,但不幸的是,启动器总是找到已安装的64位版本,并且不会回退到捆绑的32位JRE。 - radistao

1
您可以在同一台机器上安装32位和64位两个版本。实际上,您可以安装32位和64位的多个版本(例如- java6和java7)。因为每个JRE都将被安装在不同的文件夹中,所以通常不会有问题。
运行不同版本的jre时,应用程序将使用PATH变量搜索Java可执行文件。因此,如果Java 32位首先出现在PATH中,则运行Java 64位应用程序时会遇到问题。您可以通过定义一个名为JAVA32HOME的环境变量并将其值设置为C:\ java \ java6(32位)来修改路径以使用某个Java版本,然后更改命令:
%JAVA32HOME%\bin\java ...
或者您可以手动添加要使用的版本,首先在PATH变量中。请记住,在搜索PATH时找到的第一个java.exe实例将被执行。

0

如我在问题上所述(请见底部的注释),我不能这样做,因为其他应用程序需要Java 64位。 - lviggiani
你需要64位版本并不意味着你不能同时运行32位版本。 - durrrr
我看到有人也给出了解释。 - durrrr

0

考虑前往设置,选择您的活动配置文件,然后单击高级设置,在弹出的菜单中选择您想要使用的版本。一旦所有内容都配置好了,请使用终端验证正确版本的使用情况。现在通过终端输入pdate-alternatives --config java并通过选择您喜欢的版本并按下输出上的回车键来更新任何值。


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