Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java需要进程在完成时返回_Java_Batch File_Javacompiler - Fatal编程技术网

Java需要进程在完成时返回

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

我的问题需要回答两个问题,但我会尽量简短。所以我需要启动一个bat文件。现在我是这样做的:

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();