为什么我的 Eclipse 插件在一个工作区中启动正常,但在另一个工作区中则不然?

问题描述 投票:0回答:2

我已经为 Eclipse 创建了一个插件并将其导出为 JAR 文件。我将其放在 Eclipse RCP 发行版的插件目录中。然后我打开 Eclipse,插件按预期运行。我转到另一台计算机,将 JAR 放入 Eclipse RCP 发行版的插件目录中,然后打开 Eclipse。

我在错误日志中收到如下消息:

  • 启动插件时遇到问题:“org.osgi.framework.BundleException:捆绑包 MyPlugin 的 myplugin.Activator.start() 中出现异常”
  • 无法执行扩展的早期启动代码
  • 错误的扩展规范
  • 启动类必须实现 org.eclipse.ui.IStartup

其中一些消息让我感到困惑,因为这就是我的 Activator 类的样子:

public class Activator extends AbstractUIPlugin implements IStartup {...

例如,它明确实现了 IStartup。

有谁知道这里发生了什么,或者至少我应该朝哪个方向解决这个问题?

编辑

我现在创建了一个名为 StartupClass.java 的新类:

package myplugin;

import org.eclipse.ui.IStartup;

public class StartupClass implements IStartup {

@Override
public void earlyStartup() 
{

}
}

然后我将我的plugin.xml更改为如下所示:

<extension point="org.eclipse.ui.startup">
<startup class="myplugin.StartupClass" />
</extension>

这会导致类似的错误,例如:

  • 自动激活捆绑包 MyPlugin 时发生错误
  • 插件 MyPlugin 无法加载类 myplugin.StartupClass
  • 无法执行扩展的早期启动代码
java eclipse eclipse-plugin
2个回答
1
投票

您的一个工作区中是否有

org.eclipse.runtime.compatibilty
插件,但另一个工作区中没有?

您这样做的方式已被弃用,您应该有一个单独的“启动”类并将其指定为

class
元素的
<startup>
属性。

来自 启动扩展点上的 Eclipse 文档

请勿将插件类指定为 类属性的值,或者 它将被实例化两次(一次是 定期激活插件,并且一次 通过这个机制)。 如果扩展不提供 类作为启动时的属性 element,插件的激活器 (插件类)必须实现 org.eclipse.ui.IStartup.

请注意 这种形式已被弃用,不应该 不再使用。其运作依赖于 的可用性 org.eclipse.core.runtime.compatibility 插件和 org.eclipse.core.runtime.compatibility.registry 片段。


0
投票

“请注意,此表单已弃用,不应再使用。” 好的,如果我想在启动时加载插件,我现在应该做什么? 请帮忙,我没有找到这个问题的任何答案......

© www.soinside.com 2019 - 2024. All rights reserved.