0

我正在编写一个 Eclipse 插件,其功能分布在某些模块(核心、实用程序、ui 等)上。在为自己的项目类型实施新的启动配置(启动当然必须调用其他捆绑包的功能)期间,我遇到了这个启动在新线程中开始的问题,并且实现启动功能的类看不到来自其他捆绑包的类,我一直有 NoClassDefFaundError 。

我看到类是用不同的类加载器加载的,这是 OSGI 特定的行为。我在 MANIFEST 文件中添加了必要的依赖项,eclipse 向我展示了一切正常并在工作区中成功构建了我的插件。但是发生了什么错误,为什么这不起作用?

4

1 回答 1

1

问题是由于类加载器上奇怪的 OSGi 行为造成的。Eclipse 必须确保将一个包中的所有类与 PDE 打包在一起。所以通常重新启动 IDE 环境并重新启动您的 PC 会有所帮助。引用 das schlecht java 代码的 MANIFEST 必须将 mojo 类的依赖项注入到捆绑激活器中。当您通过 Eclipse PDE 使用 Ant 构建了多个插件时,GI / PD Equinox 不太可能解决这些插件的误用。我是对的..或者也许还有另一种选择需要进一步分析。

于 2013-06-11T11:20:43.513 回答