1

我正在尝试OSGify我的项目。

我正在使用Fuse jboss-fuse-6.2.1.redhat-084,如果我查看osgi:headers包,我会收到红色错误org.beanio

Import-Package =
    com.thoughtworks.xstream;version="[1.4,2)",
    javax.activation,
    javax.mail;version="[1.4,2)",
    javax.mail.internet;version="[1.4,2)",
    javax.xml.bind,
    org.apache.activemq.camel.component,
    org.apache.camel;version="[2.15,3)",
    org.apache.camel.builder;version="[2.15,3)",
    org.apache.camel.dataformat.bindy.fixed,
    org.apache.camel.spring.spi;version="[2.15,3)",
    org.apache.cxf.interceptor;version="[3.0,4)",
    org.apache.log4j;version="[1.2,2)",
    org.beanio;version="[2.1,3)",
    (others)

错误:

缺少要求 osgi.wiring.package;(&(osgi.wiring.package=org.beanio)(version>=2.1.0)(!(version>=3.0.0))))

我没有明确地导入beanio自己:它是从org.jboss.fuse.bomfor this Fuse 中获取的。camel-beanio versionis2.15.1.redhat-621084和 that使用org.beanio v2.1.0.

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-beanio</artifactId>
    </dependency>

我已经用 grep 搜索了osgi:classes,但没有使用 v3.0。此外,v3.0 甚至不存在。所以,我不知道它从哪里得到“[2.1,3)”。

我想出了如何指定 2.1.0,但它只是抱怨它找不到 2.1.0。

那我该怎么办?什么都没有导出 2.1.0。但我无法从 Import-Package 中删除它,因为 * 在搜索代码后包含它。

4

2 回答 2

1

正如您自己所说:“camel-beanio 版本是 2.15.1.redhat-621084 并且使用 org.beanio v2.1.0”

你只需要在你的pom中:

<dependency>
    <groupId>org.beanio</groupId>
    <artifactId>beanio</artifactId>
    <version>2.1.0</version>
</dependency>

这是在 Maven 中心,所以它应该可以工作。

正如我在评论中提到的,您收到的错误消息告诉您需要org.beanio版本 >= 2.1.0 而不是 >= 3.0 的包。

上面的依赖提供了这个包,你可以在这里看到。

然而,这似乎不是一个 OSGi 包......所以你必须把它包装起来

于 2016-09-05T20:17:15.873 回答
1

包括以下依赖features.xml项:

<bundle>mvn:org.beanio/beanio/${version}</bundle>

然后,输入features:refreshurl命令并安装包

于 2016-09-07T15:29:17.247 回答