gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:31:37 25 4
gpt4 key购买 nike

我正在开发这个基于 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 存储库兼容,但它似乎无法在“存储库浏览器”中工作。即使将 Maven Central 插件添加到 build.bnd 文件中,如 http://bnd.bndtools.org/plugins/maven.html 中所述,仍然产生相同的结果。

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

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

could not resolve the bundles: [slf4j.api-1.7.25 org.osgi.framework.BundleException: Unable to resolve slf4j.api [6](R 6.0): missing requirement [slf4j.api [6](R 6.0)] osgi.wiring.package; (&(osgi.wiring.package=org.slf4j.impl)(version>=1.6.0)) Unresolved requirements: [[slf4j.api [6](R 6.0)] osgi.wiring.package; (&(osgi.wiring.package=org.slf4j.impl)(version>=1.6.0))] , dk.sdu.sso.sred-0.0.0.201712041036 org.osgi.framework.BundleException: Unable to resolve dk.sdu.sso.sred [7](R 7.0): missing requirement [dk.sdu.sso.sred [7](R 7.0)] osgi.wiring.package; (osgi.wiring.package=com.aliasi.classify) Unresolved requirements: [[dk.sdu.sso.sred [7](R 7.0)] osgi.wiring.package; (osgi.wiring.package=com.aliasi.classify)] ]

所以此时我完全被阻止并且无法继续。我希望有一些 OSGi 经验的人可以在这里提供帮助。

问候和感谢。

最佳答案

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

在构建过程中,bnd 将看到您需要 jar 中的包并为其创建 Import-Package 语句。因此,在这种状态下,您需要部署一个导出包的 bundle 。事实上,这意味着您必须从 jar 中创建一个 bundle 。

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

关于java - BndTools,如何添加非 OSGi JAR?使用普通 JAR 会破坏整个项目。缺少要求的接线包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47632109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com