我需要在一个中心位置调用一个perl脚本,使用带有arguements的java ..我使用了以下代码,它什么也没做。有人告诉我什么是丢失的
final List<String> commands = new ArrayList<String>();
commands.add("perl");
commands.add("I:/golden_scripts/make-tp-patch.pl");
commands.add(destpath+"/"+"scrfile.txt.org");
commands.add(pro_name);
commands.add(patch);
ProcessBuilder pb = new ProcessBuilder(commands);
Process p1 = pb.start();
答案 0 :(得分:1)
假设您的命令是正确的(而不是在帖子中添加了额外的“错误”),并且您的环境设置正确,您可能希望阻止,直到perl脚本完成。
Process p1 = pb.start();
刚启动程序。你不是在等待它完成。你可能想要调用p1.waitFor()
来等待程序完成并返回退出代码。
然后当waitFor()返回时,您知道程序已完成或已出错。使用getInputStream()和getErrorStream()中的inputStream来获取perl脚本在运行时打印的STDOUT和STDERR消息可能也是个好主意。