2011-08-31 124 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"; 

回答