gpt4 book ai didi

java - 如何将 OSGI 包添加到 Eclipse RCP 项目

转载 作者:行者123 更新时间:2023-12-02 11:26:37 24 4
gpt4 key购买 nike

在 Eclipse 中使用“现有 JAR 文件中的插件”向导是将 OSGi 包添加到 Eclipse RCP 项目的正确方法吗?我了解 Eclipse RCP 使用 OSGi bundle ,并且该向导有效地重新打包 JAR 以使它们成为 OSGi bundle ,但是如果 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 bundle ,是否应该使用不同的方法?

最佳答案

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

因此,就您的情况而言,您可以按原样使用jersey-client.jar

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

p2-maven-plugin可能有助于为 Jersey bundle 和可能的其他依赖项创建 p2 存储库。

Eclipse Orbit项目提供了一个 p2 存储库,其中包含其他 Eclipse 项目常用的 bundle 。目录中还列出了 Jersey 客户端。也许这个已经适合您的需求。

关于java - 如何将 OSGI 包添加到 Eclipse RCP 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49574208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com