Runtime.exec什么都不做......(没有错误)

时间:2012-06-10 16:59:12

标签: java batch-file compilation runtime

我正在尝试使用java在绝对位置运行批处理文件。批处理文件将编译几个java文件。

以下是我一直在尝试的代码:

String s=file.getAbsolutePath() + "\\compile.bat";
Runtime rut = Runtime.getRuntime();
try {
    rut.exec(new String[] {file.getAbsolutePath() + "\\compile.bat"});
}catch(IOException e1) {
    e1.printStackTrace();
}
System.out.println(s);

现在,当执行此代码时,我没有控制台错误,但批处理文件未运行。但是,当我通过Windows资源管理器运行批处理文件时,批处理文件可以正常工作,编译文件并在完成后关闭。

3 个答案:

答案 0 :(得分:2)

你怎么知道没有控制台错误?

试试这个:

String s=file.getAbsolutePath() + "\\compile.bat";
Runtime rut = Runtime.getRuntime();
try {
    Process process = rut.exec(new String[] {file.getAbsolutePath() + "\\compile.bat"});
    // prints out any message that are usually displayed in the console
    Scanner scanner = new Scanner(process.getInputStream());
    while (scanner.hasNext()) {
        System.out.println(scanner.nextLine());
    }
}catch(IOException e1) {
    e1.printStackTrace();
}
System.out.println(s);

答案 1 :(得分:1)

使用exitValue()检查子流程的返回值。 如果存在的值不为零,也请读取错误流getErrorStream()

答案 2 :(得分:0)

请注意,在使用Runtime.exec调用时,正在执行的命令的工作目录将是java进程的当前工作目录。您的批处理文件是否需要在特定目录中运行?

如果您需要为子流程设置特定的工作目录,则需要使用其他版本的Runtime.exec