我正在尝试从 java 类调用 bash 脚本。
这是我的java程序
import java.io.File;
public class RunBuild {
public static void main(String[] args) {
File wd = new File("/home/sai/Jan5WS/ATCore/bin/");
System.out.println("Working Directory: " + wd);
Process proc = null;
try {
proc = Runtime.getRuntime().exec(" . Ram.sh", null, wd);
System.out.println(proc.getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
}
我已获得该脚本的所有权限,请参见下文 sai@sai-Aspire-4720Z:~/Jan5WS/ATCore/bin$ chmod 7777 Ram.sh
-rwxrwxrwx 1 sai sai 77 Feb 3 20:53 Ram.sh~
-rwxrwxrwx 1 sai sai 79 Feb 3 20:53 Ram.sh
sai@sai-Aspire-4720Z:~/Jan5WS/ATCore/bin$
它在下面抛出这个异常
Working Directory: /home/sai/Jan5WS/ATCore/bin
java.io.IOException: Cannot run program "." (in directory
"/home/sai/Jan5WS/ATCore/bin"): error=13, Permission denied
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at RunBuild.main(RunBuild.java:12)
Caused by: java.io.IOException: error=13, Permission denied
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 4 more
我正在使用Ubuntu 请让我知道可能是什么问题?
最佳答案
查看错误输出 - 您正在尝试执行 "."
这是一个目录,而不是您的 shell 脚本:
java.io.IOException: Cannot run program "."
将 exec()
调用中的 ". "
替换为 "./"
以指示当前目录,确保您的脚本具有正确的 shebang 行,例如 #!/bin/bash
,并且它是可执行的(您已经这样做了):
proc = Runtime.getRuntime().exec("./Ram.sh", null, wd);
关于Java调用bash脚本: Permission Denied Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14684713/