2011-11-10 162 views
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?

+7

難道你只是有不同的PATH?您自己的PATH包含java 64位目錄,而32位應用程序繼承具有java 32位目錄的PATH,因此它首先找到32位javaw.exe,並執行它? – DejanLekic

+1

你可以嘗試清楚你想運行哪個javaw.exe 'C:\\ Program Files \\ Java \\ jdk1.7.0 \\ bin \\ javaw.exe' –

回答

0

如果你的C++程序是32位的,你不能這樣做。您必須將C++應用程序編譯爲64位,然後才能從可執行文件調用另一個64位應用程序。

相關問題