如何将系统 属性 值传递给 processBuilder?
How to pass system property values to a processBuilder?
Java 的运行时 class 允许命名系统 属性 值在 运行 jar 时作为命令行参数发送。如下图:
Runtime.getRuntime().exec("java -jar -DiName=ABC C:\Test.jar");
我正在尝试从运行时转移到 ProcessBuilder 以实现相同的功能。需要有关执行此操作的正确方法的建议。
ProcessBuilder pb = new ProcessBuilder("java", "-jar", "C:\Test.jar").start();
在上面的代码中,如何传递"iName"?
我从运行时转移到 ProcessBuilder 的原因是,触发此运行时代码的 java 程序在使用 1.8 的特定生产环境中无法运行。0_40 JDK.
new ProcessBuilder("java", "-jar", "-DiName=ABC", "C:\Test.jar");
ProcessBuilder
接收参数数组(可变参数),这些参数将被连接并执行。
看看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 的运行时 class 允许命名系统 属性 值在 运行 jar 时作为命令行参数发送。如下图:
Runtime.getRuntime().exec("java -jar -DiName=ABC C:\Test.jar");
我正在尝试从运行时转移到 ProcessBuilder 以实现相同的功能。需要有关执行此操作的正确方法的建议。
ProcessBuilder pb = new ProcessBuilder("java", "-jar", "C:\Test.jar").start();
在上面的代码中,如何传递"iName"?
我从运行时转移到 ProcessBuilder 的原因是,触发此运行时代码的 java 程序在使用 1.8 的特定生产环境中无法运行。0_40 JDK.
new ProcessBuilder("java", "-jar", "-DiName=ABC", "C:\Test.jar");
ProcessBuilder
接收参数数组(可变参数),这些参数将被连接并执行。
看看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();
希望这有助于长期 运行!