我最近开始了一个项目,我需要在父进程中启动外部进程。但是,由于外部进程使用System.console(),因此它无法正常运行,因为它返回一个null对象。外部和父应用程序都是用java编写的,外部进程不可能以任何方式修改(因为它是由第三方生成的)
正在处理进程对象的输入和输出流,并且正在将stderr流重定向到输出。
我的问题是:有没有办法“模拟”控制台,以便外部子进程的System.console()调用返回一个挂钩到我的主(父)应用程序的有效控制台对象?
以下流程构建器代码:
final ProcessBuilder Builder = new ProcessBuilder("\"" + System.getProperty("java.home") + "\\bin\\java.exe\"", InitMemArg, MaxMemArg, "-jar", "\"" + MCServer.getName() + "\"");
Builder.redirectErrorStream(true);