В моей программе Java я запускаю внешний .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();
[...]
}
Пока я ставлю Thread.sleep(ms)
с мс> 3000 после того, как myExecutor.execute()
в моей программе это работает, но я думаю, что это не правильный способ дождаться завершения другого процесса.
Вы решили использовать вместо этого граду? Вы можете прекрасно выполнять внешние Java-процессы, и вы также можете разместить свой собственный код. Если это вам подходит, я могу подготовить ответ с примером и ссылками на документы. –