我必须从Java类调用Perl脚本。我可以使用
来做到这一点final ProcessBuilder builder = new ProcessBuilder("perl", "/home/abc.pl");
我想知道我是否可以传递像
这样的参数new ProcessBuilder("perl", "/home/abc.pl x y");
但这是一个错误。
有人可以建议如何做到这一点吗?
答案 0 :(得分:2)
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
您调用的程序的每个参数都需要是ProcessBuilder构造函数的单独参数。
new ProcessBuilder("perl", "/home/abc.pl", "x", "y");
否则你调用等价的perl "/home/abc.pl x y"
,它将无法找到名为“/home/abc.pl xy”的文件(因为x和y是不同的参数,不是文件名的一部分)
答案 1 :(得分:2)
使用以下代码从java执行perl代码。
final List<String> commands = new ArrayList<String>();
commands.add("perl");
commands.add("/home/abc.pl");
commands.add("x");
commands.add("y");
ProcessBuilder pb = new ProcessBuilder(commands);