【发布时间】:2011-03-09 12:47:02
【问题描述】:
我为 Eclipse 创建了一个插件并将其导出为 JAR 文件。我把它放在我的 Eclipse RCP 发行版的插件目录中。然后我按预期打开 Eclipse 和插件功能。我转到我的另一台计算机并将 JAR 放在 Eclipse RCP 分发的插件目录中,然后打开 Eclipse。
我在错误日志中收到如下消息:
- 启动插件时遇到的问题:“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
- 无法为扩展执行早期启动代码
【问题讨论】:
-
那么,通过这些更改,您是否会遇到与以前相同的错误?
-
是的,我遇到的错误几乎和以前一样。
-
您的新错误看起来不同。特别是,您得到“插件 MyPlugin 无法加载类 myplugin.StartupClass”。您是否在 StartupClass 类中包含了
package myplugin;行? -
@zerocrates 是的,包参考在那里,当我把它拖到这里时,我一定没有复制它。
-
@Treebranch 作为记录,John Flatness 的回答确实对我有用。你必须小心你放在启动类中的代码。例如,其中的代码永远不会在显示线程中运行,因此
Display.getCurrent()返回 null。
标签: java eclipse eclipse-plugin