我正在尝试从java程序中执行可执行文件和perl脚本。我发现了许多类似的主题,但大多数都是指windows。我知道java是独立于平台的,它应该可以工作,但事实并非如此。我已经尝试过的解决方案是基于java Runtime和exec方法的解决方案。它在windows上运行得很好,但由于我在linux上移植我的程序,我需要调整它。正如我所说的,我需要执行一个我编译过的可执行文件,并且用c ++编写,看起来它正在工作,但它完成了退出值为1的操作。我不知道它意味着什么,但在Windows上它以0退出这就是它应该在Linux上的应用(?!?!)。另一方面,珍珠脚本根本没有开始。我使用命令“perl script.pl”并以值255退出。不用说,它没有按预期执行。
有人知道另一种执行这些文件的方法吗?或者也许我的实施错误在哪里?
这是代码,如果你想看看它: 这是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";
答案 0 :(得分:1)
在Windows和Linux上启动进程应该没有区别。
好文章http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html 它是旧的方式,但提供了良好的洞察力。
文章转换为新方式: