我正在使用OSGI / Karaf生态系统。最初,我将同一个jar嵌入到两个不同的包中。事实上,这两个bundle使用来自这个嵌入式jar的类共享数据,我得到了类转换异常。假设这是因为嵌入了同一个jar的两个不同实例。 (Classloader
问题?)。
我的想法是将其安装到容器中并让捆绑包使用它。我有两个问题,首先是这个jar不是捆绑,第二个问题是..我找到了这个jar的服务组合版本,我收到了以下错误:
org.osgi.framework.BundleException:在Bundle-NativeCode的值中找不到本机代码子句:*
答案 0 :(得分:1)
首先,如果两个bundle使用相同的“依赖”,则通过Import-Package声明这些依赖,而不是嵌入jar。 其次,如果您想要一次性安装捆绑包列表,请使用Apache Karaf提供的功能。 请参阅文档here或简单示例:
<feature name="my-project" version="1.0.0">
<feature>other</feature>
<bundle start-level="80" start="false">mvn:com.mycompany.myproject/myproject-dao</bundle>
<bundle start-level="85" start="false">mvn:com.mycompany.myproject/myproject-service</bundle>
</feature>
另一种方法是通过以下方式简单地安装依赖包:
bundle:install mvn:com.mycompany.myproject/myproject-dao