有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java命令提示符在完成后不会关闭,即使在写入退出后也是如此

我有以下java代码

public static void main(String a[]) {
        String location = "C:\\Users\\test\\output\\testProject";
        File dir = new File("C:\\Users\\test\\cmds");
        ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "Start /wait","packageProject.bat",location);
        pb.directory(dir);
        Process p = null;
        try {
            p = pb.start();
            p.waitFor();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        catch(InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Folder created");
    }

批处理文件是

cd "C:\Users\test\output\test-master"

mvn clean install -DskipTests

exit

它是打包文件,但不是命令提示符。一旦进程完成,命令提示符就不会关闭

请建议


共 (1) 个答案

  1. # 1 楼答案

    你应该移除包装器CMD。EXE和start,直接调用批处理文件即可:

    String bat = new File(dir, "packageProject.bat").getAbsolutePath();
    ProcessBuilder pb = new ProcessBuilder(bat , location);
    pb.directory(dir);
    Process p = pb.start();
    p.waitFor();
    

    如果这个过程产生大量输出,如果不使用错误和输出流,可能会遇到第二个问题。您可以在后台线程中执行此操作,或者通过在pb.start()之前添加这些调用,将stdout/err发送到文件:

    pb.redirectOutput(new File(location, "std.out"));
    pb.redirectError(new File(location, "std.err"));