2011-11-10 10 views
0

私はWindows 7 64ビットで実行可能な.jarファイルを実行するために簡単なC++プログラムを使用しています。私はこれが64ビットJavaを実行することを期待しましたが、それは32ビット版を実行しません。 Javaアプリケーションが、それはむしろ予想通り「AMD64」よりも「のx86」としてマシンアーキテクチャをログに記録します起動すると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); 

私は、次のコードを使用しています。 - Javaアプリケーションログ「AMD64」を

System.getProperty("os.arch") 

を、私は、コマンドから同じコマンドを実行すると、私は予想通りプロンプト物事が仕事:私がチェックすることにより、この情報を取得します。

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ビットアプリケーションを呼び出す必要があります。

関連する問題