等待调用的jar执行完成

Mok*_*oka 0 java

在我的 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(),它就可以工作,但我想这不是等待其他进程完成的正确方法。

T.J*_*der 6

就在Process文档中:

waitFor

public abstract int waitFor()
throws InterruptedException
Run Code Online (Sandbox Code Playgroud)

如有必要,导致当前线程等待,直到此 Process 对象表示的进程终止。如果子进程已经终止,则此方法立即返回。如果子进程尚未终止,则调用线程将被阻塞,直到子进程退出。