我通过使用以下代码扩展 IOConsole 在 Eclipse 中创建了一个自定义控制台。
IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
IOConsole console = new MyConsole("My Custom Console", null);
consoleManager.addConsoles(new IConsole[] { console });
控制台已正确创建,我可以在 RCP 应用程序中显示的控制台列表中查看该控制台。
我想运行系统命令,并希望实时关联自定义控制台中的输出。我写了下面的代码,但它似乎不起作用。
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsole[] consoles = plugin.getConsoleManager().getConsoles();
for (IConsole iConsole : consoles) {
if (iConsole instanceof MyConsole) {
console = (MyConsole) iConsole;
break;
}
}
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("mvn --version");
console.setInputStream(process.getInputStream());
有什么建议吗?
您可以使用单独的线程
,在其中您可以:
- 为您使用
IOConsole#newOutputStream()
的 IOConsole
创建一个新的 OutputStream
- 从正在运行的进程
InputStream
读取数据,并使用前面提到的outputStream
将字节写入控制台,直到进程退出。
我是一名优秀的程序员,十分优秀!