在我的Java程序,我開始它修改系統剪貼板內容的外部.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();
[...]
}
只要我把用毫秒Thread.sleep(ms)
> 3000後myExecutor.execute()
在我的程序它的工作原理,但我想這是不正確的方式來等待完成其他進程。
你有沒有考慮使用gradle這個呢?您可以執行外部Java進程很好那裏,你可以把你自己的代碼那裏。如果這可能適合你,我可以用示例和對文檔的引用來準備答案。 –