【发布时间】:2017-05-26 19:56:35
【问题描述】:
在我的 Java 程序中,我启动了一个用于修改系统剪贴板内容的外部 .jar 文件。之后,我继续将数据写入剪贴板。不幸的是,看起来 jar 启动了,程序并没有等到 jar 执行完成。
这是我用来启动 jar 文件的代码:
import java.io.IOException;
public class JarExecutor {
private String pathToJar = "";
private String jarFile = "";
private String pathToJava = "C:\\ProgramData\\Oracle\\Java\\javapath\\javaw.exe";
public JarExecutor(String pathToJar, String jarFile) {
this.pathToJar = pathToJar;
this.jarFile = jarFile;
}
public void execute() {
ProcessBuilder pb = new ProcessBuilder(pathToJava, "-jar", pathToJar + jarFile);
try {
Process p = pb.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这是来自主程序:
public static void main(String[] args) {
String pathToJar = "\\\\some\\net\path";
String jarFile = "externalProgram.jar";
JarExecutor myExecutor = new JarExecutor(pathToJar, jarFile)
myExecutor.execute();
[...]
}
只要我在我的程序中的myExecutor.execute() 后面加上一个ms > 3000 的Thread.sleep(ms),它就可以工作,但我想这不是等待其他进程完成的正确方法。
【问题讨论】:
-
你考虑过用 gradle 代替吗?您可以在那里很好地执行外部 java 进程,也可以将自己的代码放在那里。如果这适合您,我可以准备一个带有示例和文档参考的答案。
标签: java