我正在编写一个带有自定义启动配置的Eclipse插件,即launch()
子类中的LaunchConfigurationDelegate
方法。这个方法基本上只调用Runtime.exec()
,但是当我从launch()
内部写入System.out时,它会进入调试插件的Eclipse实例的控制台,而不是插件实例的控制台。本身。我已经分析了该方法的ILaunchConfiguration
和ILaunch
参数,但无法在任何地方找到它们可以写入的任何输出/错误流。
正如教程中推荐的那样,我有两个独立的插件一起运行;一个处理UI内容(LaunchConfigurationTab
,LaunchConfigurationTabGroup
,LaunchShortcut
,),另一个包含LaunchConfigurationDelegate
本身。
我使用this code在我的UI插件中创建了一个控制台,我可以在UI代码中写得很好。但我无法弄清楚如何将我的非UI插件中生成的输出定向到我的UI插件中创建的控制台。
我已阅读this post和this one,但他们没有指定如何“获取”首先在launch()
方法中生成的输出。< / p>
任何指针都会非常受欢迎,我被困住了!
答案 0 :(得分:2)
好吧,我终于设法得到了如下工作:
在我的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本身。
希望这可以帮助某人......如果有人对这最后一个问题(或者我的方法一般)有一些意见,请做评论!