【问题标题】:call a own eclipse plugin method from any java application从任何 Java 应用程序调用自己的 Eclipse 插件方法
【发布时间】:2011-06-29 15:07:14
【问题描述】:

我想做以下事情:

创建一个自己的 Eclipse 插件,它(例如)只有一个方法“sayHello”,它显示一条消息“hello world”。

那么好。

但是现在我想让安装了我的插件的用户从他们的 java 代码中调用这个方法。类似的东西:

//[...]
org.jjoe64.my_eclipse_plugin.Plugin.sayHello(); // of course this won't work...
//[...]

有人知道怎么做吗?我认为这有点复杂......

【问题讨论】:

    标签: java eclipse eclipse-plugin


    【解决方案1】:

    基本上,您想从编译的代码中调用 running 插件,并从 Eclipse 中调用 running。因为这是两个独立的进程,所以没有简单的方法可以直接调用一个方法。

    一个简单的解决方案是让您的插件轮询它在用户工作区中创建的临时文件。

    class Plugin {
       void Activate() {
          while (true)
             if (temporaryFile.hasChanged())
                doSomething();
       }
    }
    

    创建一个您的用户导入其项目的库。他们调用该库中的一个函数来更新文件:

    class PluginCaller {
        static void sendMessageToPlugin(String message) {
             temporaryFile.append(message);
        }
    }
    

    当您的插件发现有更改时,它的行为就像调用了该方法一样。

    【讨论】:

    • 谢谢。这是一个好主意。我也有想法创建一个 tcp 套接字并监听一个特殊的端口......
    • 是的,套接字是另一个想法,但可能是不必要的复杂。
    • JUnit 和 TestNG 插件是怎么做的?
    • 我相信他们将 JUnit 作为一个单独的进程运行并通过控制台输出监控其状态。事实上,许多外部程序的 Eclipse 插件只是简单地运行命令行和监控输出/日志。
    • 我刚刚发布了这个答案:)
    【解决方案2】:

    JUnit 也有同样的问题。它通过运行让用户可见的静态方法产生一个单独的进程来解决这个问题,插件监控其状态。事实上,许多外部程序的 Eclipse 插件只是简单地运行命令行和监视输出/日志。 (通过Garrett Hall

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-16
      • 2018-07-05
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-01
      • 2011-03-15
      相关资源
      最近更新 更多