加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 写入Eclipse控制台

发布时间:2020-12-15 01:10:35 所属栏目:Java 来源:网络整理
导读:我的插件必须写入eclipse控制台 为了测试目的,我简化了我的代码,所以我只有以下内容: public void start(BundleContext context) throws Exception { super.start(context); plugin = this; System.out.println("Tecomp Plugin is running"); MessageConsol

我的插件必须写入eclipse控制台 – 为了测试目的,我简化了我的代码,所以我只有以下内容:

public void start(BundleContext context) throws Exception {
        super.start(context);
        plugin = this;
        System.out.println("Tecomp Plugin is running");

        MessageConsole myConsole = new MessageConsole("My Console",null);
        //myConsole.activate();
        ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[]{ myConsole });
        ConsolePlugin.getDefault().getConsoleManager().showConsoleView(myConsole);
        final MessageConsoleStream stream = myConsole.newMessageStream();
        stream.setActivateOnWrite(true);
        stream.println("Hi there!");
        stream.close();
    }

这是一个简单的插件,方法开始对扩展AbstractUIPlugin的类开始 – 它不是rcp应用程序.
代码在运行时工作台内运行良好 – 一旦安装了插件,输出就会丢失.该插件的其余部分正常工作.

ConsolePlugin可能有问题吗?或者在运行时工作台和开发工作台中以不同方式处理流?

我尝试了两个 – 一个功能项目并直接将插件jar复制到eclipse目录 – 用于安装插件 – 两者的结果相同…

欢迎任何帮助,因为我现在已经解决了这个问题一段时间了……

此致,Kathi

编辑:

它似乎不是控制台的问题…我提供了我自己的视图来打印输出,但虽然在plugin.xml中声明,安装插件后没有视图…这是我做的:
– 使用ExportWizard将插件导出到jar-archive中
– 将此存档复制到/usr/share / eclipse / plugins
– 重新开始的日食

或者使用功能项目:
– 使用ExportWizard导出包含我的插件的功能项目
– 从eclipse dir中删除了上面的jar存档
– 安装该功能
– 重新开始的日食

两个都没有说 – 安装插件我有什么问题吗?
jar-archive是好的,我查了一下 – 这是最新版本.但不知何故,似乎eclipse仍在使用一些较旧的插件而没有我所做的更改

问候,卡蒂

编辑:

我实现了IStartup接口端扩展了org.eclipse.ui.startup点,但没有任何改变……我真的认为这是一个安装问题.我注释掉了一些输出,但它仍然打印到调试控制台.
eclipse中是否有某种插件缓存?那么新代码没有被读取?

编辑:

感谢您的建议,但是使用-clean选项启动eclipse没有帮助 – 我将尝试在下周的其他环境中安装插件 – 也许我的内容有问题…

编辑:

调用compilier的类中的代码如下所示:

private MessageConsole findConsole(String name){
  ConsolePlugin plugin = ConsolePlugin.getDefault();
  IConsoleManager conMan = plugin.getConsoleManager();
  IConsole[] existing = conMan.getConsoles();
  for (int i = 0; i

但第一个测试例应该有效,不应该吗?我创建一个新的MessageConsoleStream并手动写入它.这就像我发现的例子一样.

编辑:

代码并不适合rcp应用程序 – 它只是一个插件,通过支持eiffel编程语言来扩展eclipse ide.所以我认为你的建议对我的插件不起作用–VonC,至少我不知道你的代码放在哪里……
我在初始问题中的第一个示例代码在Plugin类中被调用,该类在start(BundleContext context)方法中扩展AbstractUIPlugin.我的插件在运行,所以这个方法被调用.正如我所提到的 – 插件在运行时工作台内工作正常……

如果这不是我的问题的另外解释的正确位置,我很抱歉 – 但它似乎是系统允许我发布更多行的唯一地方.我不允许对你的答案进行评论,因为我刚刚登录并为此我没有足够的声誉点…所以,请纠正我,如果我使用的系统错了:) thx

最佳答案
你看过“Displaying the console in your RCP application“了吗?

接下来的小代码(在创建和运行工作台之前在Application.java run()中完成)是否至少表现得像你想要的那样?

MessageConsole console = new MessageConsole(”System Output”,null);
ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[] { console });
ConsolePlugin.getDefault().getConsoleManager().showConsoleView(console);
MessageConsoleStream stream = console.newMessageStream();

System.setOut(new PrintStream(stream));
System.setErr(new PrintStream(stream));

logger = LoggerFactory.getLogger(Application.class); // Previously declared.

(即,当您的插件安装在eclipse中时,控制台是否会自动显示?)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读