0

ProcessBuilder を使用して、Java アプリケーションから実行可能ファイルをロードしようとしています。

コード:

String [] cmdArray = new String[1];
cmdArray[0] = mPathToFile + mGameArrayList.get(i).Directory + mGameArrayList.get(i).Executable;

ProcessBuilder builder = new ProcessBuilder(cmdArray);
final Process process = builder.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
  System.out.println(line);
}

読み込もうとしている .exe は、自分で作成し、VS 2010 でコンパイルした小さなゲームです。Java プログラムが BufferedReader で取得しているエラーをコンソールに出力しました。クラッシュします。ゲームがメッシュやテクスチャなどのリソースを見つけることができないというエラーが表示され、ダブルクリックしてロードすると正常に動作するため、間違ってロードしていると思われます。実行に必要なリソースを持つプログラムを実行する別の方法はありますか?

前もって感謝します。

4

1 に答える 1

2

実行可能ファイルは、おそらくその作業ディレクトリが存在するディレクトリであると想定しています。デフォルトでは、ProcessBuilder ドキュメントによると:

作業ディレクトリ。デフォルト値は現在のプロセスの現在の作業ディレクトリで、通常はシステム プロパティ user.dir で指定されたディレクトリです。

を構築した後にProcessBuilder、現在の作業ディレクトリを設定する行を追加します。

builder.directory(new File(mPathToFile + mGameArrayList.get(i).Directory));

(連結により、実行可能ファイルがあるディレクトリが得られると仮定します)

于 2013-03-13T23:39:31.667 に答える