Я пытаюсь запустить приложение 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
находится на пути.