Eclipse插件:org/Eclipse/jdt/ui/JavaUI上的NoClassDefFoundError
我正在创建一个需要jdt.ui.JavaUI类的插件。我将jdt.ui插件包含在依赖项中。这是我的清单。MF:Eclipse插件:org/Eclipse/jdt/ui/JavaUI上的NoClassDefFoundError,java,eclipse,plugins,eclipse-jdt,Java,Eclipse,Plugins,Eclipse Jdt,我正在创建一个需要jdt.ui.JavaUI类的插件。我将jdt.ui插件包含在依赖项中。这是我的清单。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: panelgenera
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应用程序)调试插件,它就可以正常工作
但是,当我导出它,然后安装它,并将其复制到Eclipse插件文件夹中时,插件不起作用。一旦使用JavaUI类,就不会发生任何事情。错误日志会报告以下情况:
java.lang.NoClassDefFoundError: org/eclipse/jdt/ui/JavaUI
你知道为什么会发生这种情况吗?我能想到的唯一一件事可能是,你正在编译的版本与你运行的版本不同,并且存在不兼容二进制的更改。您可以在发生这种情况的地方看到类似的情况。在“requirebundle”中插件的顺序很重要!你应该把最基本的东西放在第一位 我建议:
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进行此操作?如果您使用的是3.4(Ganymede)或3.5(Galileo),那么就不能再向plugins文件夹添加新插件了。尝试将插件放入dropins文件夹(这是dropins文件夹的意图) 当您的插件准备好进行更持久的部署时,您可以将其与P2元数据一起导出,并使用更新管理器启动它
如果您使用的是较旧版本的Eclipse,.log文件可能会为您提供有关插件的一些详细信息。是的,如果您将插件导出到jar中,并将其复制到Eclipse安装的plugins文件夹中,则某些依赖项将无法工作(包括org.Eclipse.jdt.ui)。事实上,我相信只有org.eclipse.core中的包才能正常工作,如果您像这样分发插件的话 要实际安装插件,您需要执行以下操作之一:
正如Steve所建议的,您能否提供更多关于如何“安装”插件的详细信息(用于开发插件的Eclipse版本、安装插件的Eclipse版本、用于导出插件的过程、用于安装插件的过程等等)。这个问题很可能发生在导出/安装阶段,因为当您从工作区启动Eclipse的新实例时,插件就可以工作。