2011-08-31 281 views
0

我想從一個Java程序內執行一個可執行文件和perl腳本。我發現了很多與此類似的主題,但大多數都涉及到Windows。我知道Java是平臺獨立的,它應該反正工作,但事實並非如此。我已經嘗試過的解決方案是基於java運行時和它的exec方法。它在Windows上工作得很好,但是因爲我在Linux上移植我的程序,所以我需要適應它。正如我所說,我需要執行一個可執行文件,我已經編譯,並用C++編寫,它看起來可以工作,但它完成執行與退出值爲1.我不知道它是什麼意思,但在窗口退出0這就是它應該如何在Linux上(?!?!)。另一方面,珍珠腳本根本不會啓動。我使用命令「perl script.pl」,它退出的值爲255.不用說,它沒有做它應該做的。如何在Linux上的java文件中執行可執行文件?

有沒有人知道另一種方式來執行這些文件?或者也許我的執行有問題?

這裏的代碼,如果你想看看它: 這是一個Perl腳本

public static void main(String[] args){ 
    System.out.println("Starting"); 
    try{ 
     String[] cmd = {"perl", "cloc-1.53.pl"}; 
     Process pr = Runtime.getRuntime().exec(cmd); 
     BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream())); 

     String line=null; 

     while((line=input.readLine()) != null) { 
      System.out.println(line); 
     } 

     int exitVal = pr.waitFor(); 
     System.out.println("Exit code: " + exitVal); 
    } catch (Throwable t){ 
     t.printStackTrace(); 
    } 
} 

對於編譯後的文件我改變了:

String[] cmd = {"perl", "cloc-1.53.pl"}; 

有:

String cmd = "./UCC"; 

回答