【问题标题】:How to capture console output of Eclipse plugin with custom Launch Configuration?如何使用自定义启动配置捕获 Eclipse 插件的控制台输出?
【发布时间】:2014-07-23 17:13:50
【问题描述】:

我正在编写一个带有自定义启动配置的 Eclipse 插件,即 LaunchConfigurationDelegate 的子类中的 launch() 方法。这个方法本质上只是调用Runtime.exec(),但是当我从launch() 中写入System.out 时,它会转到正在调试插件的Eclipse 实例的控制台,而不是插件实例本身的控制台。我已经分析了该方法的 ILaunchConfigurationILaunch 参数,但找不到它们指定我可以写入的任何输出/错误流的任何地方。

按照教程中的建议,我有 2 个单独的插件一起运行;一个处理 UI 内容(LaunchConfigurationTab,LaunchConfigurationTabGroup,LaunchShortcut,),另一个包含 LaunchConfigurationDelegate 本身。

我使用this code 在我的 UI 插件中创建了一个控制台,我可以从 UI 代码中很好地写入它。但我不知道如何将我的非 UI 插件中生成的输出定向到我的 UI 插件中创建的控制台。

我已经阅读了this postthis one,但它们并没有指定如何“获取”首先在launch() 方法中生成的输出。

任何指针都会非常受欢迎,我被卡住了!

【问题讨论】:

    标签: java eclipse eclipse-plugin console


    【解决方案1】:

    好吧,我终于设法得到如下工作:

    在我的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 本身中。

    希望这对某人有所帮助.. 如果有人对最后一个问题(或关于我的一般方法)有意见,请发表评论!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多