当前位置: 首页 > 面试题库 >

将现有的JAR转换为OSGi-bundle

翟俊名
2023-03-14
问题内容

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

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


问题答案:

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

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

选项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下载不再通过网站直接提供,一个不错的选择是从Maven
Central下载。



 类似资料:
  • 我有一个 JAR 文件,我需要将其转换为 OSGi 捆绑包。我没有JAR文件的原始源代码。 我尝试使用来自以下方面的答案:如何从jar库创建OSGi捆绑包? 但是,它们已经过时了。 编辑:我需要转换几个罐子,但数量固定。

  • 在研究了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类,这也很好。提前致谢

  • 我正在尝试转换org.pbjar。jxlayer库到OSGi捆绑包,我已经成功了,但当我尝试将其安装到Karaf容器中时,该容器声称该捆绑包缺少一个需求: 无法解析312.0:缺少要求[312.1]osgi.wiring。包裹(osgi.wiring.package=com.sun.java.swing) 我也把javax.swing捆绑导入指令,但问题仍然存在我改变了JDK的版本(1.5,1.6