[英]Eclipse plugin: NoClassDefFoundError on org/eclipse/jdt/ui/JavaUI
我正在创建一个需要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
有关为什么会发生这种情况的任何想法?
“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按照您提供的顺序从包中加载类。 如果订单不是从“基本”到“非基本”,这可能会造成麻烦。 试试这个,它可能会有所帮助。
我唯一能想到的可能是你正在编译不同版本而不是你正在运行的版本,并且存在非二进制兼容的更改。 你可以在eclipse bug 177476中看到类似的东西。
您正在尝试使用哪个版本的Eclipse? 如果您使用的是3.4(Ganymede)或3.5(Galileo),则不能再将新插件添加到插件文件夹中。 尝试将插件放入dropins文件夹(这是dropins文件夹的意图)。
当您的插件准备好进行更长期的部署时,可以使用P2元数据导出它并使用更新管理器启动它。
如果您使用的是旧版本的Eclipse,.log文件可能会为您提供有关该插件的一些详细信息。
是的,如果您将插件导出到jar中并将其复制到eclipse安装的plugins文件夹中,则某些依赖项将无效(包括org.eclipse.jdt.ui)。 事实上,我相信如果你像这样分发你的插件,只有org.eclipse.core里面的包才能正常工作。
要实际安装插件,您需要执行以下操作之一:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.