2

2 つの引数を指定してコマンド ライン プログラムを実行する必要があります。ただし、作業ディレクトリで実行する必要があります。つまり、「c:\folder\subfolder\command arg1 arg2」ではなく、「command arg1 arg2」です。

ここでの他の質問から、私は Runtime.exec(cmdArray, null, workingDirectory); を使用するようになりました。しかし、「CreateProcessエラー= 2、指定されたファイルが見つかりません」というメッセージが表示され続けます。確認したところ、パスとファイルの両方が存在するため、何が問題なのかわかりません。これが私が使用しているコードです。

String [] fileName = {"mp3wrap.exe", "Clear_10", "*.mp3"};
String dirName = "E:\\Music\\New Folder\\zz Concatinate\\Clear_10";
try {
    Runtime rt = Runtime.getRuntime();
    Process pr = rt.exec(fileName, null, new File(dirName));
    BufferedReader input = new BufferedReader(new InputStreamReader
        (pr.getInputStream()));
    String line = null;
    while ((line = input.readLine()) != null) {
        System.out.println(line);
    }//end while
    int exitVal = pr.waitFor();
    System.out.println("Exited with error code " + exitVal);
}//end try
catch (Exception e) {
    System.out.println(e.toString());
    e.printStackTrace();
}//end catch`

次のエラーが表示されます。

java.io.IOException: プログラム "mp3wrap.exe" を実行できません (ディレクトリ "E:\Music\New Folder\zz Concatinate\Clear_10" 内): CreateProcess エラー = 2、指定されたファイルが見つかりません

4

2 に答える 2

4

mp3wrap.exe へのパス全体を指定します。

Java は、PATH を使用して mp3wrap を見つけません。

-- コメント後の更新:

わかりました-質問を読み直して、彼はディレクトリ内からプログラムを起動する方法を尋ねます。プログラムで必要な場合は、このディレクトリにいる間に Java プログラムを開始する必要があります。

プログラムへのパス全体を指定するか、現在のディレクトリで検索するように指示して開始する必要がある場合があります。Windowsでは、現在のディレクトリが常に検索されることを覚えています。他のシステムではここが異なるため、現在のディレクトリをドットで示します。これは Windows でも機能します: "./mp3wrap"。

于 2012-05-14T00:12:26.697 に答える
2

または、 を使用してみてくださいProcessBulder.start()Process環境変数、作業ディレクトリ、およびメソッドによって生成されるに渡す引数を設定できますstart()。サンプル呼び出しについては、Java ドキュメントを参照してください。

于 2012-05-14T00:39:26.337 に答える