2009-10-02 60 views
3

我正在创建一个需要jdt.ui.JavaUI类的插件。我将jdt.ui插件包含到依赖项中。这是我的Manifest.MF:Eclipse插件:org/eclipse/jdt/ui/JavaUI上的NoClassDefFoundError

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: PanelGenerator Plug-in 
Bundle-SymbolicName: PanelGeneratorPlugin; singleton:=true 
Bundle-Version: 0.1.0 
Bundle-Activator: panelgenerator.plugin.Activator 
Require-Bundle: org.eclipse.jdt.core, 
org.eclipse.ui, 
org.eclipse.core.runtime, 
org.eclipse.core.resources, 
org.eclipse.ui.ide, 
org.eclipse.jdt.ui 
Eclipse-LazyStart: true 

,这是我的build.properties:

source.. = src/ 
output.. = bin/ 
bin.includes = plugin.xml,\ 
      META-INF/,\ 
      .,\ 
      icons/,\ 
      templates/ 

在编译的时候我没有得到任何编译错误。如果我使用Eclipse调试插件(Debug as - > Eclipse Application),它可以正常工作。

但是,当我导出它,然后将其复制到Eclipse插件文件夹中时,该插件不起作用。只要使用了JavaUI类,就没有任何反应。错误日志报告如下:

java.lang.NoClassDefFoundError: org/eclipse/jdt/ui/JavaUI 

有关为什么会发生这种情况的任何想法?

+0

正如Steve所建议的那样,您能否提供更多关于如何“安装”插件的详细信息(用于开发插件的Eclipse版本,插件安装的Eclipse版本,使用的过程导出插件,用于安装插件的过程等)。 在导出/安装阶段可能会出现此问题,因为当您从工作区启动Eclipse的新实例时,插件将工作。 – Barthelemy 2010-03-14 11:59:48

回答

0

我能想到的唯一的事情就是您正在编译的版本不同于您正在运行的版本,并且存在非二进制兼容更改。您可以在eclipse bug 177476中看到类似情况。

2

“Require-Bundle”中插件的顺序非常重要!你应该以最基本的优先顺序排列。

我建议:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: PanelGenerator Plug-in 
Bundle-SymbolicName: PanelGeneratorPlugin; singleton:=true 
Bundle-Version: 0.1.0 
Bundle-Activator: panelgenerator.plugin.Activator 
Require-Bundle: org.eclipse.core.runtime, 
org.eclipse.core.resources, 
org.eclipse.jdt.core, 
org.eclipse.ui, 
org.eclipse.ui.ide, 
org.eclipse.jdt.ui 
Eclipse-LazyStart: true 

这是因为日食加载从您提供的顺序束的类。如果订单不是从“基本”到“非基本”,这可能会造成麻烦。试试这个,它可能有帮助。

0

您尝试使用哪种版本的Eclipse?如果您使用3.4(Ganymede)或3.5(Galileo),则不能只是将新插件添加到插件文件夹中。尝试将您的插件放入dropins文件夹中(这是dropins文件夹的用意)。

当您的插件准备好进行更持久的部署时,可以使用P2元数据导出它,并使用更新管理器启动它。

如果您使用的是旧版本的Eclipse,则.log文件可能会给您一些关于该插件的详细信息。

0

是的,如果您将插件导出到jar中,并将其复制到插件 eclipse安装的文件夹中,某些依赖项将不起作用(包括org.eclipse.jdt.ui)。实际上,我相信如果你像这样分发插件,只有org.eclipse.core中的包才能正常工作。

实际安装插件,你需要做以下之一:

  1. 复制出口的jar文件放进的dropins(未插件)文件夹。插件将在您下次启动eclipse时安装。
  2. Export and Install into the Running Host
  3. 创建一个feature项目,update site并通过安装新软件选项菜单安装插件。