Osgi java.lang.NoClassDefFoundError在尝试从另一个捆绑包检索服务时出错
让我们看看,我有三个包:提供者接口、提供者实现和客户端 Eclipse上的一切都运行顺利,但当我导出捆绑包并运行em时,在尝试检索提供程序服务时出现以下错误:Osgi java.lang.NoClassDefFoundError在尝试从另一个捆绑包检索服务时出错,java,osgi,Java,Osgi,让我们看看,我有三个包:提供者接口、提供者实现和客户端 Eclipse上的一切都运行顺利,但当我导出捆绑包并运行em时,在尝试检索提供程序服务时出现以下错误: java.lang.NoClassDefFoundError: provider/providerinterface/ProviderService 接口正在导出他的包,因此应该没有错误。此外,客户端还在其清单中导入providerInterface包 提供者接口包的.jar中确实包含ProviderService类,因此导出时也不会出
java.lang.NoClassDefFoundError: provider/providerinterface/ProviderService
接口正在导出他的包,因此应该没有错误。此外,客户端还在其清单中导入providerInterface包
提供者接口包的.jar中确实包含ProviderService类,因此导出时也不会出错
提供程序接口的清单:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: IMA_Provider
Bundle-SymbolicName: IMA_Provider
Bundle-Version: 1.0.0
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Export-Package: provider.providerinterface
客户清单:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: MAClient
Bundle-SymbolicName: MA_Client
Bundle-Version: 1.0.0
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Import-Package: provider.providerinterface,
org.osgi.framework;version="1.3.0",
org.osgi.util.tracker;version="1.4.2"
提供者和客户端只是符号名称,“客户端”捆绑包从许多其他捆绑包导入并使用许多其他类,没有任何错误。不管怎么说,我被这件事缠住了,我找不到任何理由
有什么帮助吗?通常build.properties文件有问题,导致包丢失实际的类文件。这在直接从Eclipse运行时并不重要,但在使用PDE导出捆绑包时却很重要 检查事项:
- 类文件真的在包中吗?检查捆绑包时,您至少应该有顶级的提供者/文件夹和META-INF/文件夹
- build.properties文件应类似于: 输出..=垃圾箱/ 来源..=src/ bin.includes=META-INF/
祝你好运,弗兰克。我终于解决了这个问题 清单文件或build.properties没有问题,这是一个构造函数问题 MA_提供者实现缺少无效构造函数;一旦我加上这个
public ProviderImpl(){}
在ProviderInterface的实现类中,OSGi捆绑包能够检索该服务。嘿,弗兰克,真诚地感谢您的帮助。大多数情况下,eclipse之外的运行时问题都是由这些与清单和构建文件相关的错误引起的,但事实并非如此,这就是我被卡住的原因。无论如何,我很感激;)