org.beanio的OSGi依赖关系无法解析

时间:2016-09-05 13:09:01

标签: maven osgi jbossfuse fuseesb maven-bundle-plugin

我试图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)(版本> = 2.1.0)((版本>!= 3.0.0))))

我没有自己明确导入beanio:它是从org.jboss.fuse.bom获取此保险丝的。 camel-beanio version2.15.1.redhat-621084,使用org.beanio v2.1.0

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

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

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

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

2 个答案:

答案 0 :(得分: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 Central,所以它应该有用。

正如我在评论中提到的,您收到的错误消息告诉您需要包含版本&gt; = 2.1.0且不包含&gt; = 3.0的包org.beanio

上面的依赖项提供了这个包,你可以看到here

然而,这似乎不是一个OSGi包...所以你必须wrap it

答案 1 :(得分:1)

features.xml中包含依赖项,如下所示:

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

然后,键入features:refreshurl命令并安装捆绑包