我正在尝试从 java 程序中执行一个可执行文件和一个 perl 脚本。我发现了许多与此类似的主题,但其中大多数是指 Windows。我知道 java 是独立于平台的,无论如何它都应该可以工作,但事实并非如此。我已经尝试过的解决方案是基于 java Runtime 的解决方案,它是 exec 方法。它在 Windows 上运行良好,但由于我在 linux 上移植我的程序,我需要对其进行调整。正如我所说,我需要执行一个我已经编译并用 C++ 编写的可执行文件,它看起来正在工作,但它以退出值 1 完成执行。我不知道它是什么意思,但在 Windows 上它以 0 退出这就是它应该在 linux 上的样子(?!?!)。另一方面,珍珠脚本根本没有启动。我使用命令“perl script.pl”
有人知道执行这些文件的另一种方法吗?或者也许我的实施有问题?
如果您想看一下,这是代码:这是 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";