没有osgi就绪依赖项

没有osgi就绪依赖项,osgi,apache-karaf,embedded-osgi,Osgi,Apache Karaf,Embedded Osgi,目前我正在与osgi和karaf合作 我的问题是没有“osgi就绪”依赖项,这意味着一个jar还没有准备好作为捆绑部署到karaf中 为了解决这类问题,我尝试了两种解决方案: 我尝试使用“嵌入依赖项”,它将包括jar 与项目的依赖关系。。。我不认为这是一个解决办法 因为当我尝试嵌入jar时,它会要求我包含其他 第一个罐子所依赖的罐子,依此类推 我尝试使用bnd工具或eclipse项目中的“来自现有JAR归档的插件”将没有“osgi就绪”的JAR转换为捆绑包。 这导致了相同的结果,每个jar将调

目前我正在与osgi和karaf合作

我的问题是没有“osgi就绪”依赖项,这意味着一个jar还没有准备好作为捆绑部署到karaf中

为了解决这类问题,我尝试了两种解决方案:

  • 我尝试使用“嵌入依赖项”,它将包括jar
    与项目的依赖关系。。。我不认为这是一个解决办法 因为当我尝试嵌入jar时,它会要求我包含其他 第一个罐子所依赖的罐子,依此类推

  • 我尝试使用bnd工具或eclipse项目中的“来自现有JAR归档的插件”将没有“osgi就绪”的JAR转换为捆绑包。 这导致了相同的结果,每个jar将调用它所依赖的另一个jar

我不确定我是否做得不对,或者到底是什么问题。
如何处理没有osgi支持的依赖项?最简单的方法是使用wrap:protocol自动创建jar。在幕后,它使用bnd动态创建一个包。只需将wrap:prepend添加到jar的mvn url

当您尝试使用bundle:install-s wrap:mvn:。。。karaf会告诉你哪些导入的包丢失了。安装以相同方式提供这些软件包的JAR。罐子的pom可以提示您缺少什么

如果您的初始JAR有很多依赖项,那么这意味着要安装很多JAR

一旦您有了一个可以一起安装的JAR列表,您就可以使用wrap协议创建一个特性,或者在构建时从单个JAR生成捆绑包


在任何情况下,你都应该看一看。它为许多库提供了OSGi就绪的捆绑包。

最简单的启动方法是使用wrap:protocol自动创建jar。在幕后,它使用bnd动态创建一个包。只需将wrap:prepend添加到jar的mvn url

当您尝试使用bundle:install-s wrap:mvn:。。。karaf会告诉你哪些导入的包丢失了。安装以相同方式提供这些软件包的JAR。罐子的pom可以提示您缺少什么

如果您的初始JAR有很多依赖项,那么这意味着要安装很多JAR

一旦您有了一个可以一起安装的JAR列表,您就可以使用wrap协议创建一个特性,或者在构建时从单个JAR生成捆绑包


在任何情况下,你都应该看一看。它为许多库提供了支持OSGi的捆绑包。

谢谢你的回答,但是在我为捆绑包提供OSGif后,我总是会收到一个java.lang.NoClassDefFoundError。在此之前,我有很多找不到类的异常,我通过导出所需的包修复了这些异常。感谢您的回答,但是在我对包进行了osgified之后,我总是会得到一个java.lang.NoClassDefFoundError。在此之前,我有许多找不到类的异常,我通过导出所需的包修复了这些异常。