java 为什么我的Eclipse插件在一个工作区中启动正常,而在另一个工作区中却不行?

ffx8fchx  于 5个月前  发布在  Java
关注(0)|答案(1)|浏览(58)

我已经为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
  • 无法执行扩展的早期启动代码
iqjalb3h

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片段的可用性。

相关问题