【发布时间】:2013-09-23 10:48:16
【问题描述】:
我必须从这个帖子更新我的问题 Importing "outside" java class in embedeed OSGi equinox framework。 是否可以通过系统包(或任何其他方式)导入没有清单文件的常规 java 包(不是包)并在已安装的包中使用它?
【问题讨论】:
-
OSGi 使用“常规”Java 类和包。没有其他种类。请澄清问题。
我必须从这个帖子更新我的问题 Importing "outside" java class in embedeed OSGi equinox framework。 是否可以通过系统包(或任何其他方式)导入没有清单文件的常规 java 包(不是包)并在已安装的包中使用它?
【问题讨论】:
是的,您可以在 OSGi 中使用普通 jar 中的类。您只需将类添加到框架启动器的类路径中,并将您需要的包添加到 org.osgi.framework.system.packages.extra 属性。
系统包负责将非 OSGi 类路径中的类导出到 OSGi 系统中。
这种方式与正常的捆绑部署有点不一致。因此,更好的方法可能是使用 bnd 工具或 maven bundle 插件将您的非 OSGi jar 转换为常规 bundle。
【讨论】:
OSGi 确实使用“常规 Java 类”;不同之处在于 jar 清单,它将它们变成捆绑包。您想要包含在 OSGi 安装中的任何 jar 都必须有一个捆绑清单,列出其依赖项及其提供的内容。
【讨论】: