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

BndTools,如何添加非OSGi JAR?使用普通JAR会破坏整个项目。缺少要求接线包

唐信瑞
2023-03-14

我正在从事这个基于BndTools的OSGi项目:https://github.com/Jafre13/ISS-Product

但我的项目需要一个非基于OSGi的库(aliasi lingpipe-https://mvnrepository.com/artifact/de.julielab/aliasi-lingpipe/4.1.0).

这就是问题的开始。首先,我试图直接从Maven存储库添加JAR,因为BndTools应该与Maven存储库兼容,但它似乎在“存储库浏览器”中不起作用。即使像http://bnd.bndtools.org/plugins/maven.html所述的那样将Maven Central插件添加到build.bnd文件中,仍然会产生相同的结果。

放弃让Maven工作,我尝试用最简朴的方式,自己下载JAR,并将其添加为普通JAR,如下所述:http://bndtools.org/faq.html(6)如何在构建时依赖普通JAR文件?)

这一次,JAR被识别了,我可以开始在代码中使用它。但一旦启动OSGi框架,当它试图解析非OSGi类路径时,一切都会再次崩溃,导致如下接线错误:

无法解决捆绑包:[slf4j.api-1.7.25org.osgi.framework.Bundle异常:无法解决slf4j.api[6](R 6.0):缺少需求[slf4j.api[6](R 6.0)]osgi.wiring.package;(

所以在这一点上,我完全被封锁,无法继续。我希望有OSGi经验的人能帮上忙。

问候和感谢。

共有1个答案

上官彬
2023-03-14

通过在构建时添加jar,您可以编译,但不能运行。

在构建过程中,bnd将看到您需要来自jar的包,并为其创建导入包语句。因此,在这种状态下,您需要部署一个导出包的捆绑包。事实上,这意味着你必须用你的罐子创建一个包。

另一个选择是将jar嵌入到您自己的包中。这可以通过将您需要的包添加为私有包来实现。然后Bnd将自动嵌入这些。如果jar实际上只在内部使用,那么这种方法很有效。

 类似资料:
  • 这是我的密码: 将按如下方式生成: 都很好。一切都被包装成标签。 现在我需要将这一行添加到上面的代码中: 下面是生成的代码: 但令人惊讶的是,它将被错误地生成: 看到没?元素跳出了标记。我怎么能把所有的东西都放在里面?

  • 我正面临“丢失工件Oracle:OJDBC6:jar:11.2.0.3”的问题。我看了很多博客,但没有成功。 我也尝试了ojdbc14、ojdbc7,但无法继续。 POM文件依赖项: MAVEN错误:Maven-error 我试图将oracle jar文件安装到本地存储库,但收到以下错误。 mvn安装:install-file-dfile={C:\users\riya.m2\repository\

  • 编辑1: 我目前从一个Main类调用它,如下所示: } 原文: 解释后代码如下: 我有一个带有JavaConfig的Spring应用程序,称之为主应用程序,它从库中导入另一个Spring JavaConfig类。这个导入的JavaConfig应该用一个方面包装在主应用程序中创建的任何数据源,这个方面有一个自动连接的LogDelegator。 只要主应用程序只包含一个数据源,一切都正常。但是,当我向

  • 我试图将Spring Security性添加到我的项目中,但是在将它添加到gradle文件并导入更改时,突然Spring数据JPA依赖项不再起作用了。 这是什么原因造成的?

  • 有人知道如何在Redis的Spring会话中添加会话破坏事件吗?我读到正常的方法是不可能的。我愿意这样做,因为我需要在一个会话被破坏(超时或注销)后做一些清理过程。我真的很感激你们的帮助,谢谢你们。

  • 我想生成客户对象并将它们存储在ArrayList中,但我不能。 这是我的客户类 CustomerThread类生成客户对象10次,两个客户之间间隔100毫秒 generateProcessTime的方法是生成随机整数,没有问题。这是我的测试课 当我执行这些时,会发生此错误, 线程“Thread-0”中的异常 java.lang.IndexOutOfBounds异常:索引:1,大小:1