2012-07-22 225 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」,並使用了不同的目錄,它的工作原理非常好。所以代碼幾乎是正確的。您只需要注意路徑,目錄權限並可能想要使用完整路徑。真的很感謝你的支持人員。歡呼聲