Java 如何将OSGI捆绑包添加到EclipseRCP项目

Java 如何将OSGI捆绑包添加到EclipseRCP项目,java,eclipse,osgi,eclipse-rcp,osgi-bundle,Java,Eclipse,Osgi,Eclipse Rcp,Osgi Bundle,在Eclipse中使用现有JAR归档向导中的插件是否是向Eclipse RCP项目添加OSGi包的正确方法?我知道Eclipse RCP使用OSGi捆绑包,并且该向导有效地重新打包JAR,使其成为OSGi捆绑包,但是如果MANIFEST.MF文件已经包含OSGi打包信息,该怎么办 例如,我想将Jersey REST客户端添加到RCP项目中,Jersey-Client.jar的MANIFEST.MF包含以下内容 Manifest-Version: 1.0 Bnd-LastModified: 150

在Eclipse中使用现有JAR归档向导中的插件是否是向Eclipse RCP项目添加OSGi包的正确方法?我知道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
使用现有JAR归档插件向导是将此依赖项添加到RCP项目的正确方法吗?如果它已经是OSGi捆绑包,是否应该使用其他方法?

现有JAR归档插件向导旨在从未打包为OSGi捆绑包的普通JAR创建捆绑包,包括OSGi元数据

因此,在您的例子中,可以按原样使用
jersey client.jar

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

此处可能有助于为Jersey捆绑包和其他可能的依赖项创建p2存储库


该项目提供了一个p2存储库,其中包含其他Eclipse项目常用的捆绑包。目录中还列出了一个Jersey客户端。也许这一个已经满足了您的需要。

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