0

我必须从 Java 类调用 Perl 脚本。我可以使用

final ProcessBuilder builder = new ProcessBuilder("perl", "/home/abc.pl");

我想知道我是否可以传递类似的参数

new ProcessBuilder("perl", "/home/abc.pl  x y");

但它抛出了一个错误。

有人可以建议如何做到这一点吗?

4

2 回答 2

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 x y”的文件(因为 x 和 y 是不同的参数,而不是文件名的一部分)。

于 2013-04-11T10:42:32.550 回答
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);
于 2013-04-11T11:01:54.217 回答