有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

包装jar的java OSGi服务

我正在尝试创建一个OSGi服务来封装另一个jar。我将jar添加到项目、类路径和二进制构建中。我在Activator中注册了该服务,但当消费包调用该服务时,我得到了一个java。包装器jar上的lang.NoClassDefFoundError。有人知道我做错了什么吗

提前谢谢


共 (2) 个答案

  1. # 1 楼答案

    您是否在清单中使用了Bundle类路径?你为什么不把bnd用于现有的jar呢

  2. # 2 楼答案

    您是否正在导出消费者所需的包,以及实现所需的所有包。消费者将需要导入将被引用的所有内容

    顺便说一句,在Eclipse for development中,以这种方式创建捆绑包不太好(在运行时很好)。如果试图从另一个OSGi项目引用jar中的类或接口,IDE将无法解析任何内容,因为它无法“看到”jar中的文件。jar必须在bundle中进行扩展,以使所有内容都可见(在IDE中)。出于构建目的,Eclipse基于导入和导出自动创建适当的类路径引用。如果捆绑包中没有jar文件,则必须显式维护该类路径