Java需要进程在完成时返回
我的问题需要回答两个问题,但我会尽量简短。所以我需要启动一个bat文件。现在我是这样做的:Java需要进程在完成时返回,java,batch-file,javacompiler,Java,Batch File,Javacompiler,我的问题需要回答两个问题,但我会尽量简短。所以我需要启动一个bat文件。现在我是这样做的: public static void check() throws InterruptedException{ try { Runtime.getRuntime().exec("cmd /c start build.bat"); Thread.sleep(3000); } catch (IOException e) { e.printStac
public static void check() throws InterruptedException{
try {
Runtime.getRuntime().exec("cmd /c start build.bat");
Thread.sleep(3000);
} catch (IOException e) {
e.printStackTrace();
}
}
bat文件启动java编译器编译另一个java文件,并将错误消息定向到txt文件中。这就是bat文件的外观:
@echo off
javac -Xstdout error.txt MainApp.java
exit
现在的问题是,我必须包括一个3秒的睡眠,以确保error.txt已经创建并填充了错误。这是非常不令人满意的。我需要bat文件的返回值,因此我需要程序的其余部分等待,直到它完成或从程序中启动java编译器,并将错误消息导入txt文件
谢谢大家。您可以使用:
如有必要,使当前线程等待进程结束
由此进程对象表示的已终止
我试过了,但程序并没有就此停止。bat创建txt文件后,将读取该文件。我知道程序不会停止,因为我得到了一个FileNotFoundException,error.txt找不到。@user4542607尝试在
/c
之后添加/wait
,也不需要启动
,将其删除。/wait
不幸的是什么也做不了。但是,删除/start
会阻止bat文件启动。我必须纠正自己:删除start
并不坏,但是添加/wait
会导致程序崩溃,因为bat文件似乎正在等待,而java程序没有。然而,现在waitFor()
似乎正在工作。这一切都很奇怪。
Process p = Runtime.getRuntime().exec("cmd /c start build.bat");
p.waitFor();