[英]Eclipse plugin: How to show a ProcessConsole for a launch with a custom launch configuration and process?
[英]How to capture console output of Eclipse plugin with custom Launch Configuration?
我正在编写一个带有自定义启动配置的Eclipse插件,即LaunchConfigurationDelegate
子类中的launch()
方法。 这个方法本质上只是调用Runtime.exec()
,但是当我从launch()
内部写入System.out时,它会进入调试插件的Eclipse实例的控制台,而不是插件实例本身的控制台。 我已经分析了该方法的ILaunchConfiguration
和ILaunch
参数,但无法找到任何指定我可以写入的输出/错误流的地方。
正如教程中推荐的那样,我有两个独立的插件一起运行; 一个处理UI东西( LaunchConfigurationTab
, LaunchConfigurationTabGroup
, LaunchShortcut
),另一个包含LaunchConfigurationDelegate
本身。
我使用这段代码在我的UI插件中创建了一个控制台,我可以在UI代码中写得很好。 但我无法弄清楚如何将我的非UI插件中生成的输出定向到我的UI插件中创建的控制台。
我读过这篇文章和这一个 ,但他们没有规定如何“得到阿霍德”,这是中产生的输出的launch()
摆在首位方法。
任何指针都会非常受欢迎,我被困住了!
好吧,我终于设法得到了如下工作:
在我的LaunchConfigurationDelegate
我介绍了以下静态方法:
public static void setConsole(PrintStream ps) {
System.setOut(ps);
System.setErr(ps);
}
然后在我的UI插件的PerspectiveFactory
创建我的控制台时,我将其调用如下:
private void createConsole() {
console = new MessageConsole("My Console", null);
console.activate();
ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[]{ console });
MessageConsoleStream stream = console.newMessageStream();
MyLaunchConfigurationDelegate.setConsole(new PrintStream(stream));
}
这是有效的,除非我每次关闭Eclipse并重新启动它时控制台都会消失。 但是,当我重置我的视角时,控制台会再次出现。 显然我需要在启动时调用该代码,而不是在PerspectiveFactory本身。
希望这可以帮助某人..如果有人对这最后一个问题(或者我的方法一般)有一些意见,请做评论!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.