Eclipse插件:org / eclipse / jdt / ui / JavaUI上的NoClassDefFoundError

时间:2009-10-02 13:30:17

标签: java eclipse plugins eclipse-jdt

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

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

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

4 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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

要实际安装插件,您需要执行以下操作之一:

  1. 将导出的jar复制到 dropins (非插件)文件夹中。下次启动eclipse时会安装插件。
  2. Export and Install into the Running Host
  3. 创建feature项目update site,然后通过安装新软件选项菜单安装插件。