3

以下の2行を使用してプロセスを作成しています

Runtime rt = Runtime.getRuntime();
Process p = rt.exec(COMMAND);

どこでCOMMAND = "program.exe"program.exeシステムの PATH 変数にあります。

問題は、これが Windows 2K8 R2 でのみ機能しないことです。他のすべてのフレーバーの Windows (winXP、win2003) で正常に動作します。

報告されたエラーは次のとおりです。

java.io.IOException: Cannot run program "program.exe": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
4

1 に答える 1

1

コマンドラインからプログラムを手動で実行できます。絶対パス指定を使用して、親プロセス内からプログラムを実行できます。プログラムが適切に実行されると想定できると思います。

他に何が違うでしょうか?親プロセスが実行されている環境はおそらく?プロセスを起動する前に PATH を確認します。Java を使用しています。バッチ ファイルを使用して JVM プロセスを起動するJavaプログラムが多すぎます。このバッチ ファイルは、PATH 変数をいじっている可能性があります。

これがあなたのプログラムであり、関連するバッチ ファイルがない場合は、親プログラムを実行するときに現在の作業ディレクトリを確認します。実行時に検出されるものにも影響を与える可能性があります。

于 2011-08-19T14:35:38.920 に答える