我必须从 Java 类调用 Perl 脚本。我可以使用
final ProcessBuilder builder = new ProcessBuilder("perl", "/home/abc.pl");
我想知道我是否可以传递类似的参数
new ProcessBuilder("perl", "/home/abc.pl x y");
但它抛出了一个错误。
有人可以建议如何做到这一点吗?
我必须从 Java 类调用 Perl 脚本。我可以使用
final ProcessBuilder builder = new ProcessBuilder("perl", "/home/abc.pl");
我想知道我是否可以传递类似的参数
new ProcessBuilder("perl", "/home/abc.pl x y");
但它抛出了一个错误。
有人可以建议如何做到这一点吗?
从文档中:
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 是不同的参数,而不是文件名的一部分)。
使用以下代码从 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);