运行Linux';来自java的s命令行

运行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 {

我试图从Java代码中执行一些Mac(linux?)命令。我以这节短课为例。我尝试在这个论坛上阅读其他类似的问题,但无法解决

这给了我错误

我试过:

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”
,但是我想不出一个好的理由来解释为什么这样做不起作用。也许您可以为这个问题添加一个描述解决方案的答案,以便其他有相同问题的人也可以从中学习。