java - eclipse插件启动后立即调用方法

标签 java eclipse-plugin eclipse-luna

我正在为 Eclipse Luna 开发一个插件,我想向某些 View 添加一些监听器,我知道该怎么做。我的问题是在哪里做?

我需要在插件启动后立即添加它们。所以我想在加载插件时一定有某种方法被调用,我只是在文档中找不到它。到目前为止,我尝试在 Activator 类中的 public void start(BundleContext context) throws Exception 方法中添加此监听器,但它不起作用。我认为此时 ui 部分尚未加载,这就是它失败的原因。

最佳答案

插件的 Activator start 方法在使用插件中的其他内容之前不会运行,因此这不是放置监听器的合适位置。默认情况下,Eclipse 初始化期间不会加载插件,仅在需要时加载。

您可以使用 org.eclipse.ui.startup 扩展点来定义一个实现 IStartup 的类,该类将在 Eclipse 初始化期间运行。

请注意,此接口(interface)定义的earlyStartup方法可能会在UI初始化之前运行。使用类似以下内容的内容从 earlyStartup 运行 UI 代码:

Display.getDefault().asyncExec(new Runnable() {
  public void run() {
     // UI code
  }
});

例如获取选择服务:

@Override
public void earlyStartup()
{
  Display.getDefault().asyncExec(new Runnable() {
   @Override
   public void run() {
     final ISelectionService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
     System.out.println("service " + service);
   }
 });
}

关于java - eclipse插件启动后立即调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43609733/

相关文章:

java - 安卓,netcat : how to send more than 2048 Byte over UDP

java - spring jdbcTemplate如何捕获异常?

使用 Eclipse 的安卓图形用户界面

java - eclipse- "show in project explorer"选项不起作用

java - 配置 appengine-web.xml

java - Hadoop Mapreduce 自定义记录读取器

java - 进行不同类型构建的 Maven 标准是什么?

android - eclipse 错误 : Android Library Update error

java - 如何在 eclipse Luna 中调试 JBoss 7.1 应用程序

eclipse - 如何在 Eclipse Juno/Kepler/Luna CDT 中启用 C++11?