如何使用ProcessBuilder创建独立的Process或使用exec()设置工作目录

时间:2016-06-06 09:21:36

标签: java process runtime exec processbuilder

我想调用一个独立于原始进程的进程。所以我可以使用Runtime。Runtime.getRuntime().exec("java -Xms256M -Xmx256M -jar /home/HauptServer/Games/game1/cloud.jar -p "+port)但这不会设置工作目录。所以我使用了ProcessBuilder,尝试了这个:ProcessBuilder prb = new ProcessBuilder("java","-Xms256M","-Xmx256M","-jar","cloud.jar","-p",""+port).directory(new File("/home/HauptServer/Games/game1"));但是在这种情况下它不是独立于我原来的Process运行的。 你有什么解决方案吗?

1 个答案:

答案 0 :(得分:0)

使用Runtime.getRuntime().exec(String[] cmdarray, String[] envp, File dir)

来自documentation

  

单独进程中执行指定的命令和参数   使用指定的环境和工作目录。

不要使用单行命令(java -jar ...)。使用cmdarray[]并在dir工作目录

指定

实施例

 String cmdArray[] = new String[7];
 cmdArray[0] = "java";
 cmdArray[1] = "-Xms256M";
 cmdArray[2] = "-Xmx256M";
 cmdArray[3] = "-jar";
 cmdArray[4] = "/home/HauptServer/Games/game1/cloud.jar";
 cmdArray[5] = "-p";
 cmdArray[6] = port;