使用许多系统属性运行JAVA程序中的JAR文件

发布于 2025-01-23 17:46:36 字数 796 浏览 6 评论 0原文

我想使用类似的过程构建器从我的Java程序中启动.jar文件:

ProcessBuilder pb = new ProcessBuilder("java",  "-Xdebug", "-DpropKey1=value", "-DpropKey2=value", "MyJar.jar");
Process p = pb.start();

我正在寻找一种智能的方法来传递我的Java程序用于ProcessBuilder的大量系统属性。就在这一刻,我正在这样做:

StringBuilder d1 = new StringBuilder(100);
d1.append("-DpropKey1=");
d1.append(System.getProperty("propKey1"));
String d1Str = d1.toString();

StringBuilder d2 = new StringBuilder(100);
d2.append("-DpropKey2=");
d2.append(System.getProperty("propKey2"));
String d2Str = d2.toString();

ProcessBuilder pb = new ProcessBuilder("java",  "-Xdebug", d1Str, d2Str, "MyJar.jar");
Process p = pb.start();

但是这种方式对我来说似乎不是很聪明。只是我有很多系统属性,我想从Java程序中传递出来(超过10个)。使用StringBuilder为我要通过的每个系统属性使用StringBuilder并不适合。

I want to start a .jar File out of my java program using the Process Builder like this:

ProcessBuilder pb = new ProcessBuilder("java",  "-Xdebug", "-DpropKey1=value", "-DpropKey2=value", "MyJar.jar");
Process p = pb.start();

I am looking for a smart way to pass a high amount of the system properties my java program is using to the ProcessBuilder. Right at this moment I am doing it like this:

StringBuilder d1 = new StringBuilder(100);
d1.append("-DpropKey1=");
d1.append(System.getProperty("propKey1"));
String d1Str = d1.toString();

StringBuilder d2 = new StringBuilder(100);
d2.append("-DpropKey2=");
d2.append(System.getProperty("propKey2"));
String d2Str = d2.toString();

ProcessBuilder pb = new ProcessBuilder("java",  "-Xdebug", d1Str, d2Str, "MyJar.jar");
Process p = pb.start();

But this way doesn't seem very smart to me. It's just I have a lot of system properties I want to pass out of the java programm (more than 10). It doesn't feel right to use a StringBuilder for every system property I want to pass.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜深人未静 2025-01-30 17:46:36

尝试以下操作:

String[] params=... 

new ProcessBuilder(params).start()

参数是字符串的参数数组。

旧:

写一个方法,可以解决问题。作为参数,它可以获得映射< string,string>。

条目的关键是参数名称,条目的值是参数值。

该方法将字符串构建在循环中,该循环在地图的输入集上迭代。

抱歉,我读了错误!这将与ProcessBuilder这样可以使用!

Try this:

String[] params=... 

new ProcessBuilder(params).start()

Params is an array of parameters as String.

Old:

Write a method, which does the trick. As argument it could get a Map<String, String>.

The key of an entry is the parameter name, and the value of an entry is the parameter value.

The method builds the String in a loop, which is iterating over the entry set of the map.

Sorry, I read false! This will not work this way with processbuilder!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文