【发布时间】:2015-04-30 04:44:39
【问题描述】:
我正在运行一个 java 应用程序 (app1),它使用 ProcessBuilder 和 Fixed Thread Pool 并行运行另一个 java 应用程序 (app2) 的多个实例,代码如下:
futures = new ArrayList<Future<String>>();
executor = Executors.newFixedThreadPool(10);
for (int i=0; i<cnt;i++)
{
ProcessBuilder builder = new ProcessBuilder();
builder.command("java","app2"); //I set the class path in the real code
builder.directory(new File("/Users/Evan/Documents/workspace/MyProj/ins_"+i));
builder.inheritIO();
ProcessRunner pr=new ProcessRunner (builder);
futures.add(executor.submit(pr));
}
app2 的每次运行都有不同的工作目录(文件夹 ins_i 中 i 的值每次运行都不同)。该代码有效,但现在在app2中,我想从当前进程的工作目录中读取一个文件(即/Users/Evan/Documents/workspace/MyProj/ins_“+i)。所以在app2代码中我需要一个语句让我知道当前流程构建器的目录(基本上是“/Users/Evan/Documents/workspace/MyProj/ins_”+i 中 i 的值)。
我试过这个说法:
System.getProperty("user.dir")
它没有工作,因为它检索到“/Users/Evan/Documents/workspace/MyProj”
谢谢你,感谢任何帮助
【问题讨论】:
-
什么是
ProcessRunner?它在运行时实际上做了什么?
标签: java process processbuilder working-directory