使用许多系统属性运行JAVA程序中的JAR文件
我想使用类似的过程构建器从我的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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试以下操作:
参数是字符串的参数数组。
旧:
写一个方法,可以解决问题。作为参数,它可以获得映射< string,string>。
条目的关键是参数名称,条目的值是参数值。
该方法将字符串构建在循环中,该循环在地图的输入集上迭代。
抱歉,我读了错误!这将与ProcessBuilder这样可以使用!
Try this:
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!