【发布时间】:2022-02-02 02:14:48
【问题描述】:
我正在使用一个简单的 C++ 程序在 Windows 7 64 位中运行一个可执行的 .jar 文件。我希望它执行 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?
【问题讨论】:
-
可能是您的路径不同吗?你自己的PATH包含java 64bit dir,而32bit app继承PATH包含java 32bit dir,所以它先找到32bit javaw.exe,然后执行?
-
您能否尝试明确说明您要运行哪个 javaw.exe,例如
C:\\Program Files\\Java\\jdk1.7.0\\bin\\javaw.exe
标签: java c++ 32bit-64bit windows-7-x64