gpt4 book ai didi

java - 如何将系统属性值传递给 processBuilder?

转载 作者:行者123 更新时间:2023-12-01 09:21:07 24 4
gpt4 key购买 nike

Java 的 Runtime 类允许在运行 jar 时将命名的系统属性值作为命令行参数发送。如下所示:

Runtime.getRuntime().exec("java -jar -DiName=ABC C:\\Test.jar");

我正在尝试从运行时迁移到 ProcessBuilder 以实现相同的功能。需要有关正确方法的建议。

ProcessBuilder pb = new ProcessBuilder("java",  "-jar",  "C:\\Test.jar").start();

在上面的代码中,如何传递“iName”?

我从 Runtime 迁移到 ProcessBuilder 的原因是,触发此 Runtime 代码的 java 程序无法在使用 1.8.0_40 JDK 的特定生产环境中运行。

最佳答案

看看 Javadoc .

那里明确指出 ProcessBuilder构造函数可以采用 public ProcessBuilder(String... command) 的形式(例如,请参阅 Timothy Truckle 评论),或者等效地,只是 List<String> 类型的单个参数。 .

Runtime相反,它标记一个字符串,这里是 ProcessBuilder ,需要已经标记化的参数列表。

也许,为了避免将来出现任何困惑,最好将参数存储在变量中,以便以后更容易修改。例如:

List<String> params = java.util.Arrays.asList("java", "-jar", "-DiName=ABC", "C:\\Test.jar");
ProcessBuilder pb = new ProcessBuilder(params).start();

希望这从长远来看有帮助!

关于java - 如何将系统属性值传递给 processBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40163136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com