2009-08-27 12 views
1

私は次のシグネチャを持つメソッドを使用したい:正しい構文

exec(String command, String[] envp, File dir) 

私のプログラムは、「MYPROG.EXE」と呼ばれ、それはC」に位置していると:\ Program Files \ My Software」を参照してください。 Runtime.execを使用するための正しい構文は何ですか?私は "システムは指定されたファイルを見つけることができません"というエラーメッセージを表示し続けます。私は、ディレクトリからMYPROG.EXEを開始したい明確にするために、「C:\プログラムファイル\マイソフトウェア」およびJavaプログラムが実行されていないところから

私が代わりに exec()の他のフレーバーを使用することをお勧めします

答えて

2

exec(String[] cmdarray, String[] envp, File dir) 

このメソッドを使用すると、cmdarray[0]の実行可能ファイルと、後続の配列要素のコマンド引数(存在する場合)に完全パスを渡すことができます。これは、引用やエスケープなどの処理や、単純化されたexec()で動作させるために行う必要がある処理よりも堅牢です。

質問の他の部分に答えるには、exec()コールのdirパラメータにプログラムを開始するパス("C:\\Program Files\\My Software")を必ず渡してください。また、Javaでは\がエスケープ文字として使用されているので、パス名には\\を使用しました。つまり、パス名を表すリテラル文字列に2文字を使用する必要があります。