0
我正在使用简单的C++程序在Windows 7 64位中运行可执行文件.jar文件。我预计这会执行64位Java,但它不会,它执行32位版本。当Java应用程序启动时,它记录了机器架构为“86”,而不是预期的“AMD64”如何从32位C++应用程序启动64位Java应用程序?
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);
:
我使用下面的代码。我通过检查得到这样的信息:
System.getProperty("os.arch")
当我运行从命令提示符工作的事情如我所料相同的命令 - 在Java应用程序日志“AMD64”。
如何更改启动程序以启动64位Java?
难道你只是有不同的PATH?您自己的PATH包含java 64位目录,而32位应用程序继承具有java 32位目录的PATH,因此它首先找到32位javaw.exe,并执行它? – DejanLekic
你可以尝试清楚你想运行哪个javaw.exe 'C:\\ Program Files \\ Java \\ jdk1.7.0 \\ bin \\ javaw.exe' –