从 PowerShell 运行 Java 程序将启动 64 位 JVM:从 .bat 文件启动 32 位 JVM

从 PowerShell 运行 Java 程序将启动 64 位 JVM:从 .bat 文件启动 32 位 JVM

我正在尝试从批处理文件启动 Java 应用程序,其堆大小为 2G,如下所示:

java -Xmx2G -XX:MaxPermSize=256M -jar cauldron-1.7.10-1.1236.05.212-server.jar nogui

从批处理文件运行此命令时,Windows 会尝试使用 32 位 JVM 启动它,但会失败,因为 2G 堆对于 32 位 JVM 来说太大了。

D:\directory>java -Xmx2G -XX:MaxPermSize=256M -jar minecraft_server.1.7.10.jar nogui
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

添加-d64标志以尝试强制使用 64 位 JVM 确认 Windows 正在尝试在 32 位 JVM 中启动它。

D:\directory>java -d64 -Xmx2G -XX:MaxPermSize=256M -jar minecraft_server.1.7.10.jar nogui
Error: This Java instance does not support a 64-bit JVM.
Please install the desired version.

然而,当我从 PowerShell 控制台运行完全相同的命令时,Windows 决定使用 64 位 Java,并且一切都正常运行。

我猜测批处理文件和 powershell 控制台的路径变量是不同的。

这个问题的根本原因是什么,我该如何解决它,以及如何防止它再次发生?


附录:

java -debug -version批处理文件的输出:

D:\directory>java -debug -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) Client VM (build 24.45-b08, mixed mode, sharing)

从 PowerShell 中:

PS D:\ATLauncher_Hacking\install> java -debug -version
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)

编辑:ECHO %PATH%从批处理文件运行-我看到它C:\Program Files\Java\jre7\bin在路径上。

相关内容