在我的 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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是来自主程序的:
public static void main(String[] args) {
String pathToJar = "\\\\some\\net\path";
String jarFile = "externalProgram.jar";
JarExecutor myExecutor = new JarExecutor(pathToJar, jarFile)
myExecutor.execute();
[...]
}
Run Code Online (Sandbox Code Playgroud)
只要我在程序中的Thread.sleep(ms)后面加上 ms > 3000 myExecutor.execute(),它就可以工作,但我想这不是等待其他进程完成的正确方法。
就在Process文档中:
waitForRun Code Online (Sandbox Code Playgroud)public abstract int waitFor() throws InterruptedException如有必要,导致当前线程等待,直到此 Process 对象表示的进程终止。如果子进程已经终止,则此方法立即返回。如果子进程尚未终止,则调用线程将被阻塞,直到子进程退出。
| 归档时间: |
|
| 查看次数: |
1309 次 |
| 最近记录: |