我正在使用OSGI/Karaf生态系统。最初,我将同一个罐子嵌入到两个不同的捆绑包中。事实上,这两个捆绑包利用这个嵌入式 jar 中的类共享数据,我得到了类转换异常。假设这是由于嵌入了同一jar的两个不同实例。(Classloader
问题?
我的想法是将其安装到容器中并让捆绑包使用它。我有两个问题,第一个是这个罐子不是捆绑包,第二个问题是..我找到了这个jar的服务组合版本,但出现以下错误:
org.osgi.framework.BundleException:在 Bundle-NativeCode 的值中找不到本机代码子句: *
首先,如果两个捆绑包使用相同的"依赖关系",则通过 Import-Package 声明这些依赖关系,而不是嵌入 jar。 其次,如果您想一次性安装捆绑包列表,请使用 Apache Karaf 提供的功能。 请参阅此处的文档或简单示例:
<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