2

いくつかの文字列を追加してコマンド文字列を作成しています。アプリケーションをデバッグして変数から最終的な文字列をコピーすると、ターミナルで完全に機能します。Runtime.getRuntime().exec(cmd1);cmd1 が機能しない文字列である場合、エラー 2 (そのようなファイルまたはディレクトリはありません) が表示されます。
私のコードは次のようになります。

String cmd1 = sPath + " \"" + files[i].getPath() + "\" \"" 
+ files[i].getPath().replace(".wav", "_L.wav") + "\" remix 1";
Process p1 = Runtime.getRuntime().exec(cmd1);
p1.waitFor();

最終的な cmd1 文字列は次のとおりです。

 /Users/Me/Downloads/sox-14.4.1/sox "/Users/Me/Desktop/DB/A1199/Klu a1.wav"
 "/Users/Me/Desktop/DB/A1199/Klu a1_L.wav" remix 1

このエラーが発生する理由はありますか? sox パスを引用符で囲んでみましたが、役に立ちません。

わかりました、私はこれを試しました:

String[] cmd1 = new String[4];
cmd1[0] = soxPath;
cmd1[1] = "'" + files[i].getPath() + "'";
cmd1[2] = "'" + files[i].getPath().replace(".wav", "_L.wav") + "'";
cmd1[3] = "remix 1";

ProcessBuilder builder = new ProcessBuilder(cmd1);
builder.redirectErrorStream(true);
System.out.println(builder.command().toString());
final Process p1 = builder.start();
copy(p1.getInputStream(), System.out);
p1.waitFor();

しかし、それでも同じ結果が得られます...コマンドは端末で機能しますが、Javaアプリはエラーをスローします:/Users/Me/NetBeansProjects/DataPrepare/sox/sox FAIL formats: can't open input file "/Users/Me/Desktop/DB/audio.wav"': No such file or directory

4

0 に答える 0