我正在尝试从批处理文件启动 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
在路径上。