【问题标题】:Running java in 32 bit mode on windows 64在 Windows 64 上以 32 位模式运行 java
【发布时间】:2014-07-23 11:13:25
【问题描述】:

我需要在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.

如果没有 -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,因为其他应用程序需要它

【问题讨论】:

  • 你为什么需要它,出于好奇?
  • 因为我需要在 32 位模式下使用 SWT,因为我的应用程序嵌入了一个浏览器控件,该控件需要使用目前在 32 位模式下可用的插件
  • 好奇你是否有机会不在 cmd 中运行它。 IOW,你在 ide 中试过了吗?
  • 是的,从 Eclipse 我可以将它添加到我可用的 JRE 中并使用它。但是从cmd它只能通过添加32位jre的完整路径来做到这一点

标签: java jvm 32bit-64bit


【解决方案1】:

据此FAQ

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

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

【讨论】:

    【解决方案2】:

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

    另外将我的 jar 包装成 exe 更方便部署我的应用程序。

    【讨论】:

    • 考虑更进一步,并提供一个捆绑的运行时,就像 launch4j 为您提供的那样;那么您就完全摆脱了客户端上的运行时安装状态。缺点是您需要为不同的操作系统提供不同的下载包。
    • 你有哪些launch4j xml设置?我现在有同样的问题,但不幸的是,启动器总是找到已安装的 64 位版本并且不会回退到捆绑的 32 位 jre
    【解决方案3】:

    您可以在同一台机器上同时安装 32 位和 64 位。事实上,您可以安装 32 位和 64 位的多个版本(例如 - java6 和 java7)。因为每个 JRE 都会安装在不同的文件夹中,所以通常没关系。

    当运行不同版本的 jre 时,您的应用程序将使用 PATH 变量搜索 Java 可执行文件。因此,如果 Java 32 位首先在 PATH 上,则运行 Java 64 位应用程序将遇到问题。您可以修改路径以使用某个 Java 版本,例如通过使用值 C:\java\java6 (32bit) 定义环境变量 JAVA32HOME 并将命令更改为

    %JAVA32HOME%\bin\java ...

    或者您可以手动添加要使用的版本,首先在 PATH 变量中。请记住,在搜索 PATH 时找到的第一个 java.exe 实例将被执行。

    【讨论】:

      【解决方案4】:

      你为什么不直接从下面的链接安装 32 位版本的 Java:

      Java Downloads for All Operating Systems

      【讨论】:

      • 正如我在上面的问题中所说的(见底部的注释),我不能因为其他应用程序需要 java 64bit
      • 你需要64位版本并不意味着你也不能运行32位版本。
      • 还有人对此也做了解释,我明白了。
      【解决方案5】:

      考虑进入您的设置,选择您的活动配置文件,然后点击高级设置,现在在弹出的菜单上选择您想要使用的版本。配置完所有内容后,使用终端验证正确版本的使用。现在 incaqse 因此 pdate-alternatives --config java. 通过终端并通过选择您喜欢的版本并在您获得的输出上按下回车键来更新任何值

      【讨论】:

        猜你喜欢
        • 2014-05-16
        • 1970-01-01
        • 2011-02-17
        • 2016-11-16
        • 2011-05-13
        • 2013-05-08
        • 2012-06-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多