web-dev-qa-db-ja.com

ProcessBuilderで作業ディレクトリを設定する方法

私はubuntuのホームディレクトリでプロセスを開始しようとしています。配列の範囲外の例外を取得しています。コードは次のとおりです。

Process p = null;
ProcessBuilder pb = new ProcessBuilder();
pb.directory(new File("/home"));
p = pb.start();

例外は次のとおりです。

Exception in thread "main" Java.lang.ArrayIndexOutOfBoundsException: 0
    at Java.lang.ProcessBuilder.start(ProcessBuilder.Java:459)
    at tester.Main.main(Main.Java:31)
Java Result: 1
31
Eric

/ homeを実行しようとしていますが、実行可能ファイルではありません。プロセスビルダーの constructor 引数は、実行するコマンドです。

作業ディレクトリを設定します。それは directory メソッドで可能です。

完全な例を次に示します。

Process p = null;
ProcessBuilder pb = new ProcessBuilder("do_foo.sh");
pb.directory(new File("/home"));
p = pb.start();
70
dmeister