繁体   English   中英

eclipse4 RCP片段“无法从包中加载类”

[英]eclipse4 RCP Fragment “Unable to load class from bundle”

我目前正在尝试将Eclipse 3 RCP应用程序迁移到e4。 该项目基于一个主插件项目和几个片段项目。 我正在使用Eclipse Mars进行开发。 以下描述基于我为此创建的示例项目。

主应用程序提供了一个简单的菜单,其中包含一些已处理的菜单项。 该片段应为此添加更多菜单项。 但是我得到一个异常告诉我,无法加载分配的处理程序类:

!ENTRY org.eclipse.e4.ui.workbench 4 0 2015-10-15 17:44:04.540
!MESSAGE Unable to load class 'de.fragment.Handler' from bundle '61'
!STACK 0
java.lang.ClassNotFoundException: Can not load a class from a fragment bundle: E4TestFragment_1.0.0.qualifier [61]

这两个项目的结构大致如下。

主要应用程序(eclipse PlugIn-Project):

  • META-INF / MANIFEST.MF
  • Application.e4xmi
  • plugin.xml中

MANIFEST.MF内容:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: E4Test3
Bundle-SymbolicName: E4Test3;singleton:=true
Bundle-Version: 1.0.0.qualifier
Require-Bundle: javax.inject;bundle-version="1.0.0",
 org.eclipse.core.runtime;bundle-version="3.11.0",
 org.eclipse.swt;bundle-version="3.104.0",
 org.eclipse.e4.ui.model.workbench;bundle-version="1.1.100",
 org.eclipse.jface;bundle-version="3.11.0",
 org.eclipse.e4.ui.services;bundle-version="1.2.0",
 org.eclipse.e4.ui.workbench;bundle-version="1.3.0",
 org.eclipse.e4.core.di;bundle-version="1.5.0",
 org.eclipse.e4.ui.di;bundle-version="1.1.0",
 org.eclipse.e4.core.contexts;bundle-version="1.4.0",
 org.eclipse.e4.ui.workbench.swt;bundle-version="0.13.0",
 org.eclipse.e4.ui.workbench.renderers.swt;bundle-version="0.13.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ClassPath: .

片段(eclipse片段项目):

  • DE /片段/ Handler.java
  • META-INF / MANIFEST.MF
  • fragment.e4xmi
  • fragment.xml之

MANIFEST.MF内容:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: E4TestFragment
Bundle-SymbolicName: E4TestFragment;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Fragment-Host:  E4Test3;bundle-version="1.0.0"
Export-Package: de.fragment
Bundle-ClassPath: .

fragment.e4xmi本身已正确评估。 我通过从菜单项中删除处理程序进行检查,然后将图标添加到gui中。

老实说,我不知道什么会导致此异常。 你们中有人有想法可以帮助我吗?

提前致谢

我认为您可能会混淆Eclipse插件中“碎片”的两个含义。

您有一个fragment.e4xmi ,它是“片段”的e4含义-e4模型的片段。

然后,将其放入“片段”插件中。 片段插件是片段的不同含义,不是正常的插件。 实际上,它们根本不是单独的插件(相反,它们只是主机插件的一部分)。

将您的E4TestFragment更改为普通插件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM