【问题标题】:How to add OSGI bundle to Eclipse RCP project如何将 OSGI 包添加到 Eclipse RCP 项目
【发布时间】:2018-09-09 11:34:29
【问题描述】:

在 Eclipse 中使用 Plugin from Existing JAR Archives 向导是否是将 OSGi 包添加到 Eclipse RCP 项目的正确方法?我了解 Eclipse RCP 使用 OSGi 包,并且该向导有效地重新打包 JAR 以将它们制成 OSGi 包,但是如果 MANIFEST.MF 文件已经包含 OSGi 打包信息怎么办?

例如,我想将 Jersey REST 客户端添加到 RCP 项目中,并且 jersey-client.jar 的 MANIFEST.MF 包含以下内容

Manifest-Version: 1.0
Bnd-LastModified: 1504605074705
Build-Jdk: 1.8.0_144
Built-By: pavel
Bundle-Description: Jersey core client implementation
Bundle-DocURL: http://www.oracle.com/
Bundle-License: https://oss.oracle.com/licenses/CDDL+GPL-1.1, https://
 oss.oracle.com/licenses/CDDL+GPL-1.1
Bundle-ManifestVersion: 2
Bundle-Name: jersey-core-client
Bundle-SymbolicName: org.glassfish.jersey.core.jersey-client
Bundle-Vendor: Oracle Corporation
Bundle-Version: 2.26.0
Created-By: Apache Maven Bundle Plugin
Export-Package: org.glassfish.jersey.client;uses:="javax.inject,javax.
 net.ssl,javax.ws.rs,javax.ws.rs.client,javax.ws.rs.core,javax.ws.rs.e
 xt,org.glassfish.jersey,org.glassfish.jersey.client.spi,org.glassfish
 .jersey.internal,org.glassfish.jersey.internal.inject,org.glassfish.j
 ersey.internal.util,org.glassfish.jersey.internal.util.collection,org
 .glassfish.jersey.message,org.glassfish.jersey.message.internal,org.g
 lassfish.jersey.spi";version="2.26.0",org.glassfish.jersey.client.aut
 hentication;uses:="javax.ws.rs,javax.ws.rs.client,javax.ws.rs.core";v
 ersion="2.26.0",org.glassfish.jersey.client.filter;uses:="javax.ws.rs
 .client,javax.ws.rs.core";version="2.26.0",org.glassfish.jersey.clien
 t.spi;uses:="javax.net.ssl,javax.ws.rs.client,javax.ws.rs.core,org.gl
 assfish.jersey.client,org.glassfish.jersey.process";version="2.26.0"
Import-Package: javax.annotation;version="[1.2,2)",javax.inject;versio
 n="[1.0,2)",javax.net.ssl,javax.ws.rs;version="[2.1,3)",javax.ws.rs.c
 lient;version="[2.1,3)",javax.ws.rs.core;version="[2.1,3)",javax.ws.r
 s.ext;version="[2.1,3)",org.glassfish.jersey;version="[2.26,3)",org.g
 lassfish.jersey.client.spi,org.glassfish.jersey.internal;version="[2.
 26,3)",org.glassfish.jersey.internal.guava;version="[2.26,3)",org.gla
 ssfish.jersey.internal.inject;version="[2.26,3)",org.glassfish.jersey
 .internal.l10n;version="[2.26,3)",org.glassfish.jersey.internal.spi;v
 ersion="[2.26,3)",org.glassfish.jersey.internal.util;version="[2.26,3
 )",org.glassfish.jersey.internal.util.collection;version="[2.26,3)",o
 rg.glassfish.jersey.message;version="[2.26,3)",org.glassfish.jersey.m
 essage.internal;version="[2.26,3)",org.glassfish.jersey.model.interna
 l;version="[2.26,3)",org.glassfish.jersey.process;version="[2.26,3)",
 org.glassfish.jersey.process.internal;version="[2.26,3)",org.glassfis
 h.jersey.spi;version="[2.26,3)",org.glassfish.jersey.uri;version="[2.
 26,3)"
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"
Tool: Bnd-3.2.0.201605172007

使用 Existing JAR Archives 中的插件 向导是否是将此依赖项添加到 RCP 项目的正确方法,或者如果它已经是 OSGi 包,是否应该使用不同的方法?

【问题讨论】:

  • 您是否尝试将捆绑包添加到目标平台?

标签: java eclipse osgi eclipse-rcp osgi-bundle


【解决方案1】:

来自现有 JAR 档案的插件向导旨在从未打包为 OSGi 包的普通 JAR 创建包,包括 OSGi 元数据。

因此,就您而言,您可以照原样使用jersey-client.jar

通常,更有趣的问题是在哪里配置捆绑包,以便可以轻松地从您的 RCP 应用程序中使用它。如果您使用目标平台定义和/或用于 CI 构建的 Tycho,您可能希望能够从 p2 存储库中获取包。

p2-maven-plugin 可能有助于在这里为 Jersey 捆绑包和可能的其他依赖项创建一个 p2 存储库。

Eclipse Orbit 项目提供了一个 p2 存储库,其中包含其他 Eclipse 项目常用的包。目录中还列出了一个泽西岛客户。也许这个已经满足你的需要了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多