我已经为Eclipse创建了一个插件,并将其导出为一个插件文件。我将其放在我的Eclipse RCP发行版的插件目录中。然后我打开Eclipse,并按预期打开插件功能。我转到另一台计算机,将插件文件放在Eclipse RCP发行版的插件目录中,然后打开Eclipse。
我在错误日志中收到如下消息:
- Problems encountering up plugin:“org.osgi.framework.BundleException:Exception in myplugin.Activator.start()of bundle MyPlugin”
- 无法执行扩展的早期启动代码
- 错误的扩展规范
- 启动类必须实现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
- 无法执行扩展的早期启动代码
1条答案
按热度按时间iqjalb3h1#
你有
org.eclipse.runtime.compatibilty
插件在一个工作区,但没有其他?你这样做的方式已经过时了,你应该有一个单独的“startup”类,并将其指定为
<startup>
元素的class
属性。关于Eclipse docs on the startup extension point:
不要将插件类指定为class属性的值,否则它将被示例化两次(一次通过常规插件激活,一次通过此机制)。如果扩展没有提供class作为startup元素上的属性,则插件的激活器(插件类)必须实现org.eclipse.ui.IStartup。
请注意,此表单已弃用,不应再使用。其功能依赖于org.eclipse.core.runtime.compatibility插件和org.eclipse.core.runtime.compatibility.registry片段的可用性。