Java 如何启动 CMD 并保持依附于它以进行用户交互?

Java how to start CMD and stay attached to it for user interaction?

我正在努力解决以下问题:我正在尝试构建一个应用程序,当 运行 时,它会打开一个 CMD window(对用户可见)并附加到该应用程序window 的输入和输出(因此它的功能类似于应用程序的控制台)。因此,如果用户在 CMD window 中键入某些内容,那么例如扫描仪 (System.in) 可以拾取它,当我输入 System.out.println 时,它会出现在 CMD window.

我知道可以简单地 运行 来自 CMD 的 .jar 文件并像这样附加它,但这不是我想要的。我希望 .jar 在其自身上打开 CMD window 并将其用作控制台(对用户可见)。

期待一些建议:)

感谢 Poohl 的建议,我想出了以下解决方案:

当不带参数启动 .jar 时,它会自动在同一文件夹中查找 .bat 文件 "launcher.bat" 并通过 CMD 进程启动该文件:

    if(args.length > 0 && args[0].equals("ATTACH") {
        // Execute command-line program....
    } else {
        ArrayList<String> commands = new ArrayList<>();
        commands.add("cmd.exe");
        commands.add("/c");
        commands.add("start");
        commands.add("cd " + new File("").getAbsolutePath()); // cd to classpath
        commands.add("launcher.bat"); // The launcher that is in classpath

        ProcessBuilder pb = new ProcessBuilder(commands);

        Process p = pb.start();
    }

.bat 文件包含以下语句:

java -jar LineCounter.jar ATTACH

因此,使用 processbuilder 打开的 cmd window 将再次打开 bat 文件,该文件打开 .jar 文件并保持附加到它。