【问题标题】:Using regular java class in OSGi bundles在 OSGi 包中使用常规 java 类
【发布时间】:2013-09-23 10:48:16
【问题描述】:

我必须从这个帖子更新我的问题 Importing "outside" java class in embedeed OSGi equinox framework。 是否可以通过系统包(或任何其他方式)导入没有清单文件的常规 java 包(不是包)并在已安装的包中使用它?

【问题讨论】:

  • OSGi 使用“常规”Java 类和包。没有其他种类。请澄清问题。

标签: java class osgi bundle


【解决方案1】:

是的,您可以在 OSGi 中使用普通 jar 中的类。您只需将类添加到框架启动器的类路径中,并将您需要的包添加到 org.osgi.framework.system.packages.extra 属性。

系统包负责将非 OSGi 类路径中的类导出到 OSGi 系统中。

这种方式与正常的捆绑部署有点不一致。因此,更好的方法可能是使用 bnd 工具或 maven bundle 插件将您的非 OSGi jar 转换为常规 bundle。

【讨论】:

    【解决方案2】:

    OSGi 确实使用“常规 Java 类”;不同之处在于 jar 清单,它将它们变成捆绑包。您想要包含在 OSGi 安装中的任何 jar 都必须有一个捆绑清单,列出其依赖项及其提供的内容。

    【讨论】:

      猜你喜欢
      • 2015-09-04
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 2016-04-16
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      相关资源
      最近更新 更多