【问题标题】:How to use the class in an OSGI bundle jar file directly?如何直接使用 OSGI 捆绑 jar 文件中的类?
【发布时间】:2014-09-15 01:07:17
【问题描述】:

在我们的系统中,一些类被打包为 OSGI bundle jar 文件。这些 jar 文件将用于支持 OSGI 的 Glassfish 服务器。

我想编写一个测试客户端代码来调用这些捆绑 jar 文件中的一些方法。但我不想使用 Glassfish。我只想使用 Tomcat 或 Jetty。

我们正在使用 Maven 来管理依赖项。捆绑 pom 是这样的:

<artifactId>oursystem-name-biz</artifactId>
<packaging>bundle</packaging>
<name>oursystem-name-biz</name>

是否可以在支持 OSGI 的情况下使用这些捆绑的 jar 文件?

【问题讨论】:

  • 我很确定您可以将其粘贴在类路径中并远离代码,但我无法对其进行测试,因为我手边没有 osgi 包。捆绑包只是一个 jar 文件,其中包含 Manifest 文件中的一些 osgi 特定细节。

标签: java maven osgi


【解决方案1】:

视情况而定。

是的,您可以将包放在标准 Java 类路径中并从中加载类,但前提是这些类位于 jar 的根目录中。

但是,OSGi 支持 Bundle-Classpath 的概念,并且(类似于 Java 类路径)是一个将在包中搜索的路径。这意味着您可以创建要搜索的位置列表,例如 jar 中的特定子目录或 jar 中嵌入的 jar。如果您将 jar 放在 Java 类路径上,则这些都不支持,因此如果这是您的目标,请确保避免使用 Bundle-Classpath。

【讨论】:

    猜你喜欢
    • 2014-07-25
    • 2020-05-15
    • 2013-11-02
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 2011-01-17
    相关资源
    最近更新 更多