gpt4 book ai didi

java - osgi 应用程序中的非 osgi 库使用

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:28 25 4
gpt4 key购买 nike

是否可以将非 osgi 库与 OSGi 应用程序一起使用?

例如,我正在开发一个基于语义的搜索引擎,我正在为其使用第三方自然语言处理库 ( http://wiki.opencog.org/w/RelEx_Dependency_Relationship_Extractor )。

是否可以将这样一个不支持 OSGi 的库作为几个 jar 文件与我的 OSGi 应用程序连接?

最佳答案

正如之前的答案中所写,如果您想在 bundle 中使用其他库,您有两种选择:

  1. 将库 jar 嵌入到将要使用的包中,
  2. 从库中创建有效的 OSGi 包。

第一种方法更简单,因为您只需要将库 jar(及其所有依赖项)复制到一个包(例如,一个根目录),然后将它们添加到 Bundle-Classpath MANIFEST.MF 中的 元素(参见 here )。但是,在执行此操作时,您必须记住,这个添加的库仅在嵌入它的包中可见(因此库重用受到限制)。您始终可以将此库中的包添加到 MANIFEST.MF 中的 Export-package 元素,以使其对其他包可见,但这远非优雅的解决方案(但它会起作用).

为了使其对其他包可见,您应该使用第二种方法,即从库中创建一个 OSGi 包(在 Eclipse 中也有一些工具可以帮助您做到这一点) .然而,对于更复杂的库,这种方法可能更难(因为 OSGi 中的依赖性和特定类加载方法)。

因此,如果您只想在一个包中使用该库,我建议使用第一种方法(它更容易实现)。如果您想在应用程序的多个 bundle 中使用此库,您应该考虑第二种方法。

关于java - osgi 应用程序中的非 osgi 库使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4931292/

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