当前位置: 首页 > 知识库问答 >
问题:

包和JAR之间的OSGI和maven依赖关系

任昊阳
2023-03-14

我遇到了一个关于OSGI包和“普通”maven jar依赖关系的问题。

A.M是普通的java应用程序,它启动OSGI框架并加载包。

在项目顶层pom(a.pom)中,我定义了一个commons-logging-1.1.1的依赖项,然后在OSGI包a.x中使用commons-logging。maven-bundle-plugin为a.x生成清单,其中包含一个发生“commons-logging”的导入条目。

当我早上开始并打印出所有加载的JAR时(使用getSystemClassLoader...)然后在控制台上列出../../..///commons-logging-1.1.1.jar。因为来自顶级POM的maven-dependency。

为什么在安装包时,不能用内存中(在A.M)已经存在的commons-logging lib来解决(来自A.X的)commons-logging依赖关系?

我很感激任何帮助!!!!

共有1个答案

闻人梓
2023-03-14

这是因为您的一个OSGI包正在使用公共日志记录中的一些东西,而这些东西不是OSGI中的导出包。因此,您要么找到一个绑定的commons-logging版本,并导出您试图使用的包,要么将jar添加到用户包的bundle-classpath(还有其他更脏的选项)。第一个选项比第二个好得多,因为它是模块化的;也就是说,您可以在不更改任何其他包的情况下更新公共日志记录。

正如前面提到的,它在应用程序类路径中的事实与此无关

 类似资料:
  • 如何将这个插件添加为依赖项和插件?我如何将此用作依赖项? 谢谢

  • 我想构建这个项目,以便最终的jar在一个jar文件中包含所有依赖项(如果不可能的话,包括从依赖项到jar文件的类),我遵循了线程Including dependencies in a jar with Maven,但它也包含了我在pom中甚至没有提到的依赖项。这是我的POM,它只有两个依赖项。 我想当Final构建时,它包括pom中提到的特定依赖项(以类或jar形式)

  • 问题内容: 我正在使用Spring 3和Hibernate 4 JPA。我对 javax.persistence JAR 感到困惑。我在Google上发现了以下两个Maven依赖项。请告诉我以下两个依赖项中需要哪个? 问题答案: 其中的第一个是API Jar,它定义了应用程序应使用的与供应商无关的接口。 第二个是该API的EclipseLink实现。 可以删除对第一个依赖项的引用,而只需使用Ecl

  • 我有一些OSGi包(简单的OSGi,没有eclipse依赖项)和一个maven构建,使用pax runner在Knopflerfish服务器中启动它们。 maven构建和启动包工作得非常好,但是只能通过Pax runner(< code > mvn Pax:provision )。 为了调试捆绑包,最好直接从eclipse中启动它们,否则我的断点不会触发(似乎很明显,因为pax:provision

  • 我当前设置中最麻烦的部分是由于Tycho显然无法处理只使用Maven(即非OSGi)的工件。我当前的设置如下所示: > 在每个Eclipse插件的中,我在阶段向发出目标。这将把我指定的工件解压缩到单独的目录中。 目录作为输出目录添加到中,以便Tycho在编译时将其添加到类路径中: 这些设置允许Maven指令编译插件。从VCS导入项目,并手动指定目录作为Eclipse中的类文件夹,这样IDE也可以编

  • 在下面的示例中,OSGi解析和Maven依赖支持中所需的步骤似乎存在差异/重复。 我有一个jar,它依赖于外部第三方jar,在本例中时间为4J。 然后,我可以通过导入包并运行等方式在本地运行我的简单jar。 当导入OSGi时,我必须确保首先导入这个jar,通常使用PAX包装URL。 这对于一个jar依赖关系是可以的,但是当有多个依赖关系时又如何。我可以使用features.xml文件来收集这些JA