2012-07-22 132 views
0

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

它给了我错误。

我想:

Runtime rt = Runtime.getRuntime(); 
Process pr = rt.exec("/Users/xxxx/Documents/ABC"); 

访问被拒绝的消息出现。下面的代码给出了错误。

这个问题 Want to invoke a linux shell command from Java 已经谈到了类似的问题,但我不认为他们结束了他们的辩论。

我使用的是mac os 10.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(); 
     } 
    } 
} 
+0

该进程是否有适当的权限来查看该对象? – 2012-07-22 01:42:35

+0

如果我将它作为自己运行,指向我拥有的文件,它会运行并且无错地退出。 – 2012-07-22 01:43:58

+3

请编辑您的文章并添加生成的_complete_堆栈跟踪。 – 2012-07-22 01:44:24

回答

0

我使用了完整路径“/ bin/bash”,并使用了不同的目录,它的工作原理非常好。所以代码几乎是正确的。您只需要注意路径,目录权限并可能想要使用完整路径。真的很感谢你的支持人员。欢呼声