java - 将现有的 JAR 转换为 OSGi 包

标签 java intellij-idea osgi osgi-bundle

我有一个 JAR 文件需要转换为 OSGi 包。 我没有 JAR 文件的原始源代码。

我尝试使用以下答案:How to create OSGi bundle from jar library?

但是,它们已经过时了。

编辑:我需要转换几个但固定数量的 jar。

最佳答案

选项 1 - 使用 bnd-platform 在期望频繁添加/更新 Jar 时,或者当您可以从 Maven 存储库检索依赖项时构建您的 OSGi 包

我们使用 bnd-platform (我也是作者)管理第三方依赖项并从中创建 OSGi 包。您可以将它与从 Maven 存储库和本地 Jar 中检索到的依赖项一起使用(请参阅 README)。如果您定期添加或更新依赖项,我建议您尝试使用 bnd-platform。它是 Gradle 的插件,您可以轻松地从 this template 开始- 只需添加您的 Jar 文件并提供项目自述文件中所述的配置(包符号名称、版本)并运行 gradlew bundles

选项 2 - 使用 bnd 来构建您的 OSGi 包,当您只做一次或添加/更新很少时

如果您只执行一次或很少执行此过程,从现有 Jar 创建 OSGi 包的简单方法是直接使用 bnd on the command line .您唯一需要的是 Java 和 bnd jar。您可以使用 wrap 尝试自动包装一个 jar 或使用 instructions for bnd 创建一个 .bnd 文件(例如,仅导出特定包)。

示例 .bnd 文件:

-classpath: lib/trove-2.0.4.jar
-output: gnu.trove-2.0.4.jar
Export-Package: *;-split-package:=merge-last;-noimport:=true
Import-Package: *
Bundle-Version: 2.0.4
Bundle-Name: GNU Trove Collections Plug-in
Bundle-SymbolicName: gnu.trove

调用示例:

java -jar <path to bnd>.jar trove-2.0.4.bnd

不再直接通过网站提供 bnd Jar 下载,一个不错的选择是 download it from Maven Central .

关于java - 将现有的 JAR 转换为 OSGi 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29494485/

相关文章:

java - 二进制 XML 文件行 #10 : Error inflating class com. google.android.material.button.API 级别 19 的 MaterialButton

c# - 没有catch block 的finally block 是java反模式吗?

azure - 如何访问远程hadoop系统(Azure上的沙箱)

kotlin - 结构搜索接口(interface)挂起函数调用

java - CDI:bean-discovery-mode=annotated 被忽略

java - 在 OSGi 包中加载 DLL(使用 JNA)

java - setParameterList 海量数据列表

java - "return"是否停止了方法的执行?

java - 如何在 intellij 中设置 android 源代码?

java - 如何在 OSGI 包中包含 C 代码