Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse插件:org/Eclipse/jdt/ui/JavaUI上的NoClassDefFoundError_Java_Eclipse_Plugins_Eclipse Jdt - Fatal编程技术网

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

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

我正在创建一个需要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: 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中的包才能正常工作,如果您像这样分发插件的话

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

  • 将导出的jar复制到dropins(非插件)文件夹中。插件将在下次启动eclipse时安装
  • 创建一个项目,并通过“安装新软件选项”菜单安装插件

  • 正如Steve所建议的,您能否提供更多关于如何“安装”插件的详细信息(用于开发插件的Eclipse版本、安装插件的Eclipse版本、用于导出插件的过程、用于安装插件的过程等等)。这个问题很可能发生在导出/安装阶段,因为当您从工作区启动Eclipse的新实例时,插件就可以工作。