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

将现有JAR转换为OSGi包

水焱
2023-03-14

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

我尝试使用来自以下方面的答案:如何从jar库创建OSGi捆绑包?

但是,它们已经过时了。

编辑:我需要转换几个罐子,但数量固定。

共有3个答案

邢令
2023-03-14

如果您使用的是Maven,那么您可以使用Maven Bundle插件在OSGi包中内嵌或嵌入依赖项:

http://felix.apache.org/documentation/subprojects/

薛钧
2023-03-14

Eclipse Bundle Recipe项目提供了一种基于Maven的方法,用于将OSGi元数据添加到从Maven存储库中消费的jar中。尽管名字如此,它并没有使用Eclipse。

它的核心是使用bnd工具。这个工具就像一把瑞士军刀。它分析jar和类文件,并正确计算包的导入和导出。您应该自己使用bnd来转换专有jar。在Maven Central有售。

薛望
2023-03-14

选项 1 - 当需要频繁添加/更新 Jars 时,或者当您可以从 Maven 存储库检索依赖项时,使用 bnd-platform 构建 OSGi 捆绑包

我们使用bnd平台(我也是作者)来管理第三方依赖项并从中创建OSGi捆绑包。您可以将其与从 Maven 存储库检索到的依赖项和本地 Jar 一起使用(请参阅自述文件)。如果你经常添加或更新你的依赖关系,我建议你尝试bnd-platform。这是Gradle的一个插件,您可以轻松地从此模板开始 - 只需添加Jar文件并提供项目README(捆绑包符号名称,版本)中描述的html" target="_blank">配置,然后运行gradlew捆绑包

选项2-使用bnd构建您的OSGi捆绑包,只需一次,或者很少添加/更新

如果您只执行此过程一次或很少执行,则从现有 Jar 创建 OSGi 捆绑包的一种简单方法是直接在命令行上使用 bnd。你唯一需要的是Java和bnd jar。您可以使用 wrap 来尝试自动包装 jar 或创建一个 .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直接下载不再提供

 类似资料:
  • 问题内容: 我有一个JAR文件,我需要将其转换为OSGi捆绑软件。我没有JAR文件的原始源代码。 编辑: 我需要转换几个,但固定数量的jar。 问题答案: 选项1- 当期望频繁添加/更新Jars或可以从Maven存储库检索依赖项时,请使用 bnd-platform 构建OSGi捆绑包 我们使用bnd-platform(我也是作者)来管理第三方依赖项并从中创建OSGi捆绑包。您可以将其与从Maven

  • 在研究了OSGi框架之后,我开发了一个示例web应用程序,web应用程序包(.war或.jar)打包在EBA中。war文件在其目录中包含一组嵌入式jar文件,这些jar已转换为OSGi bundle),并根据jar之间的关系提供了所需的导出和导入包。现在我甚至不得不提到bundle-classpath中的所有这些jar。上面的工作是因为一个bundle(wab也是一个bundle)可以在其中包含一

  • 问题内容: 我有一个带有jar文件的Java应用程序和一个lib文件夹,我想将我的应用程序以及lib文件和文件夹捆绑到一个.DMG文件中,以便在MAC OS x上运行,所以如果有人有类似的经验,请帮帮我。 提前致谢 问题答案: 您将所有文件放在一个文件夹中。然后打开“磁盘工具”(“应用程序”->“实用工具”->“磁盘工具”),然后选择“文件夹中的新映像…”。 就这样。

  • 有什么想法吗?

  • 我正在尝试找到一种将dll转换为jar文件的方法。我有一个与java应用程序通信的.NET应用程序。核心实体是.NET对象,我必须在Java中手动复制这些对象。我读过关于IKVM的文章,但它似乎只将JAR转换为DLL,而不是将其转换为DLL。 编辑:如果有一个工具可以从dll创建java类,这也很好。提前致谢

  • 问题内容: 我正在寻找使用eclipse bndtools插件将jar转换为OSGi捆绑包的逐步指南。我知道可以使用命令行使用bnd来做到这一点,但是很高兴知道如何通过IDE来做到这一点。 我可能会丢失一些内容,但是本教程仅说明如何从头开始创建项目。 问题答案: 请按照文章从标准jar创建Eclipse插件(OSGi捆绑软件)来实现。 尽管此方法不使用Bnd,但是您将能够实现所需的功能。 简而言之