Я использую простую программу на C++ для запуска исполняемого файла .jar в 64-разрядной версии Windows 7. Я ожидал, что это выполнит 64-битную версию Java, но это не так, она выполняет 32-битную версию.
Я использую следующий код:
const char* javaw_path = "javaw.exe";
const std::string memory = "-Xmx" + user_configured_memory();
const char* jar = "-jar";
const char* jar_file = "\"HelloWorld.jar\"";
const std::string cli_args = get_cli_args(argc, argv);
const char* args[] = {javaw_path, memory.c_str(),
jar, jar_file, cli_args.c_str(), static_cast<char*>(NULL)};
const int ret = execvp(javaw_path, args);
Когда приложение Java запускается, оно регистрирует архитектуру машины как «x86», а не «amd64», как ожидалось. Я получаю эту информацию, проверяя:
System.getProperty("os.arch")
Когда я запускаю ту же команду из командной строки, все работает так, как я ожидал — приложение java регистрирует «amd64».
Как я могу изменить свою программу запуска для запуска 64-битной Java?
C:\\Program Files\\Java\\jdk1.7.0\\bin\\javaw.exe
- person Peter Lawrey   schedule 11.11.2011