36

ubuntu のホーム ディレクトリでプロセスを開始しようとしています。アクセス許可拒否の例外が発生し続けますが、その理由がわかりません。コードは次のとおりです。

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

例外は次のとおりです。

Exception in thread "main" java.io.IOException: Cannot run program "/home": 

java.io.IOException: error=13, Permission denied
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:475)
        at tester.Main.main(Main.java:30)
Caused by: java.io.IOException: java.io.IOException: error=13, Permission denied
        at java.lang.UNIXProcess.<init>(UNIXProcess.java:164)
        at java.lang.ProcessImpl.start(ProcessImpl.java:81)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:468)
        ... 1 more
Java Result: 1
4

1 に答える 1

83

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

作業ディレクトリを設定したい。ディレクトリメソッドを使用してそれを行うことができます。

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

Process p = null;
ProcessBuilder pb = new ProcessBuilder("do_foo.sh");
pb.directory(new File("/home"));
p = pb.start();
于 2011-12-06T19:40:10.227 に答える