运行Linux';来自java的s命令行
我试图从Java代码中执行一些Mac(linux?)命令。我以这节短课为例。我尝试在这个论坛上阅读其他类似的问题,但无法解决 这给了我错误 我试过:运行Linux';来自java的s命令行,java,bash,shell,command-line,Java,Bash,Shell,Command Line,我试图从Java代码中执行一些Mac(linux?)命令。我以这节短课为例。我尝试在这个论坛上阅读其他类似的问题,但无法解决 这给了我错误 我试过: Runtime rt = Runtime.getRuntime(); Process pr = rt.exec("/Users/xxxx/Documents/ABC"); 出现拒绝访问消息。下面的代码给出了错误 这个问题 他谈到了类似的问题,但我认为他们并没有结束辩论 我正在使用MacOS10.7 public class Main {
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("/Users/xxxx/Documents/ABC");
出现拒绝访问消息。下面的代码给出了错误
这个问题
他谈到了类似的问题,但我认为他们并没有结束辩论
我正在使用MacOS10.7
public class Main {
public static void main(String args[]) {
try {
Process p = Runtime.getRuntime().exec(new String[]{"bash","-c","ls /Users/xyz/Documents/ABC"});
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=null;
while((line=input.readLine()) != null) {
System.out.println(line);
}
int exitVal = p.waitFor();
System.out.println("Exited with error code "+exitVal);
} catch(Exception e) {
System.out.println(e.toString());
e.printStackTrace();
}
}
}
我使用了完整路径“/bin/bash”,并使用了不同的目录,它工作得非常好。所以代码几乎是正确的。您只需要小心使用路径、目录权限,并且可能希望使用完整路径。非常感谢你们的支持。cheers进程是否具有查看该对象的适当权限?如果我以自己的身份运行它,指向我拥有的文件,它将运行并退出,不会出错。请编辑您的帖子并添加生成的完整堆栈跟踪。您的代码对我来说运行良好。您可以尝试使用完整路径
“/bin/bash”
,而不仅仅是“bash”
,但是我想不出一个好的理由来解释为什么这样做不起作用。也许您可以为这个问题添加一个描述解决方案的答案,以便其他有相同问题的人也可以从中学习。