我想从一个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";