Karaf中的起始捆绑包出错:"via two dependency chains"



我当前正在开发一种骆驼路由,该路由从netty4/mllp端点读取并将HL7消息存储到AMQP队列中。

这是我的环境:

  • apache-maven-3.3.9
  • apache-karaf-4.1.1
  • apache-camel-2.18.3
  • Apache-Artemis-2.0.0

这是我的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>*****</groupId>
<artifactId>*****</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>*****</name>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>3.3.0</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                    <Bundle-SymbolicName>${project.artifactId}-bundle</Bundle-SymbolicName>
                    <Bundle-Activator>${project.groupId}.${project.artifactId}.*****.*****</Bundle-Activator>
                </instructions>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.core</artifactId>
        <version>6.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.8.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.8.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-core</artifactId>
        <version>2.18.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-amqp</artifactId>
        <version>2.18.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-netty4</artifactId>
        <version>2.18.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-hl7</artifactId>
        <version>2.18.3</version>
    </dependency>
</dependencies>

我可以在日食中以"主"类的方式运行该项目,没有任何问题。但是,当我将捆绑包部署到卡拉夫容器时,我正在遇到一些问题。

我正在生成带有previus pom.xml文件的捆绑jar,带有apache felix插件, maven clean package目标。

卡拉夫安装是干净的。我只设置以下内容:

  • 同一卡拉夫容器内的Artemis AMQP经纪人

feature:repo-add artemis feature:install artemis-amqp

  • 骆驼组件

feature:repo-add camel feature:install camel-core camel-netty4 camel-amqp camel-hl7

我将jar束复制到部署文件夹中,并尝试使用bundle:start my-bundle启动它,但我会收到以下错误。

Error executing command: Error executing command on bundles:
Error starting bundle 110: Unable to resolve demograficos-bundle [110](R 110.0): missing requirement [demograficos-bundle [110](R 110.0)] osgi.wiring.package; (&(osgi.wiring.package=javax.jms)(version>=1.1.0)(!(version>=2.0.0))) Unresolved requirements: [[demograficos-bundle [110](R 110.0)] osgi.wiring.package; (&(osgi.wiring.package=javax.jms)(version>=1.1.0)(!(version>=2.0.0)))]

我从此理解,容器中缺少JMS实现。

我尝试了feature:install jms,但是现在我有以下错误

错误执行命令:捆绑上的错误执行命令:        错误启动束110:使用约束违规。无法解析资源demograficos-bundle [demograficos-bundle [110](r 110.0(],因为它从资源org.apache.geronimo.geronimo.specs.geronimo-jms_ms_1.1.1.1.1.1.1_spec [org.apache [org.apache]接触到" javax.jms'"软件包的'javax.jms'。geronimo.specs.geronimo-jms_1.1_spec [120](r 120.0(]和org.apache.geronimo.specs.geronimo-jms_2.0_2.0_spec [org.apache.geronimo.specs.geronimo.specs.geronimo-jms_ms_ms_2.0_spec [75](R(75.0(]通过两个依赖链。链1:  Demograficos-Bundle [Demograficos-Bundle [110](R 110.0(]    导入:(&(osgi.wiring.package = javax.jms((版本> = 1.1.0((!(版本> = 2.0.0((((     |    导出:osgi.wiring.package:javax.jms  org.apache.geronimo.specs.geronimo-jms_1.1_spec [org.apache.geronimo.specs.geronimo-jms_1.1.1.1_spec [120](r 120.0(]链2:  Demograficos-Bundle [Demograficos-Bundle [110](R 110.0(]    导入:(&(osgi.wiring.package = org.apache.camel.component.amqp((版本> = 2.18.0((!(版本> = 3.0.0(((     |    导出:osgi.wiring.package = org.apache.camel.component.amqp;用途:= javax.jms  org.apache.camel.camel-amqp [org.apache.camel.camel.camel-amqp [86](r 86.0(]    导入:(&(osgi.wiring.package = javax.jms((版本> = 1.1.0((!(版本> = 3.0.0((((((     |    导出:osgi.wiring.package:javax.jms  org.apache.geronimo.specs.geronimo-jms_2.0_spec [org.apache.geronimo.specs.geronimo-jms_2.0_spec [75](r 75.0(]未解决的要求:] osgi.wiring.package;(&(osgi.wiring.package = org.apache.camel.component.amqp((版本> = 2.18.0(

但我看不到列出的两个previus geronimo捆绑包,只有一个

START LEVEL 100 , List Threshold: 50
 ID | State     | Lvl | Version        | Name
----+-----------+-----+----------------+---------------------------------------------------------------------------------------------------
 28 | Active    |  80 | 4.1.1          | Apache Karaf :: OSGi Services :: Event
 52 | Active    |  80 | 19.0.0         | Guava: Google Core Libraries for Java
 53 | Active    |  80 | 4.1.6.Final    | Netty/Buffer
 54 | Active    |  80 | 4.1.6.Final    | Netty/Codec
 55 | Active    |  80 | 4.1.6.Final    | Netty/Codec/HTTP
 56 | Active    |  80 | 4.1.6.Final    | Netty/Common
 57 | Active    |  80 | 4.1.6.Final    | Netty/Handler
 58 | Active    |  80 | 4.1.6.Final    | Netty/Resolver
 59 | Active    |  80 | 4.1.6.Final    | Netty/Transport
 60 | Active    |  80 | 3.0.0          | Expression Language 3.0 API
 61 | Active    |  80 | 1.2.0          | CDI APIs
 62 | Active    |  80 | 1.2            | javax.interceptor API
 63 | Active    |  80 | 1.2            | javax.transaction API
 64 | Active    |  80 | 2.0.0          | ActiveMQ Artemis AMQP Protocol
 65 | Active    |  80 | 2.0.0          | ActiveMQ Artemis Native POM
 66 | Active    |  80 | 2.0.0          | ActiveMQ Artemis Server OSGi
 67 | Active    |  80 | 1.1.1          | Apache Aries Transaction Blueprint
 68 | Active    |  80 | 2.1.0          | Apache Aries Transaction Blueprint
 69 | Active    |  80 | 1.3.2          | Apache Aries Transaction Manager
 70 | Active    |  80 | 1.9.2          | Apache Commons BeanUtils
 71 | Active    |  80 | 3.2.2          | Apache Commons Collections
 72 | Active    |  80 | 1.0.2          | Apache Felix Coordinator Service
 75 | Active    |  80 | 1.0.0.alpha-2  | Apache Geronimo JMS Spec 2.0
 76 | Active    |  80 | 1.0.0.alpha-1  | Apache Geronimo JSon Spec 1.0
 77 | Active    |  80 | 0.9.5          | Johnzon :: Core
 81 | Active    |  80 | 0.20.0         | QpidJMS Client
 82 | Active    |  80 | 0.16.0         | proton-j
 83 | Active    |  80 | 1.0.0.2        | Apache ServiceMix :: Bundles :: javax.inject
 84 | Active    |  80 | 3.3.0.Final    | JBoss Logging 3
 85 | Active    |  80 | 3.6.9.Final    | JGroups
 86 | Active    |  50 | 2.18.3         | camel-amqp
 87 | Active    |  50 | 2.18.3         | camel-catalog
 88 | Active    |  50 | 2.18.3         | camel-commands-core
 89 | Active    |  50 | 2.18.3         | camel-core
 90 | Active    |  50 | 2.18.3         | camel-jms
 91 | Active    |  80 | 2.18.3         | camel-karaf-commands
 92 | Active    |  50 | 1.6.0          | Commons Pool
105 | Active    |  50 | 4.1.7.Final    | Netty/Transport/Native/Epoll
106 | Active    |  50 | 2.18.3         | camel-netty4
107 | Active    |  50 | 2.2            | HAPI - Java HL7 API - OSGI Bundle
108 | Active    |  50 | 2.18.3         | camel-hl7
109 | Active    |  50 | 2.0.14         | Apache MINA Core
110 | Installed |  80 | 0.0.1.SNAPSHOT | **********
111 | Active    |  80 | 2.0.0          | ActiveMQ Artemis HornetQ Protocol
112 | Active    |  80 | 2.0.0          | ActiveMQ Artemis HQClient Protocol
114 | Active    |  80 | 4.1.6.Final    | Netty/Codec/MQTT
115 | Active    |  80 | 2.0.0          | ActiveMQ Artemis MQTT Protocol
116 | Active    |  80 | 2.0.0          | ActiveMQ Artemis OpenWire Protocol
117 | Active    |  80 | 2.0.0          | ActiveMQ Artemis STOMP Protocol
118 | Active    |  80 | 1.0.1          | geronimo-j2ee-management_1.1_spec
119 | Active    |  80 | 1.11.0         | hawtbuf
123 | Active    |  80 | 4.1.1          | Apache Karaf :: JMS :: Core


karaf@root()> bundle:tree-show *****
Bundle **********-bundle [110] is currently INSTALLED
- import javax.jms;version="[1.1,2)": resolved using org.apache.geronimo.specs.geronimo-jms_1.1_spec [122]
- import org.apache.camel;version="[2.18,3)": resolved using org.apache.camel.camel-core [89]
- import org.apache.camel.builder;version="[2.18,3)": resolved using org.apache.camel.camel-core [89]
- import org.apache.camel.component.amqp;version="[2.18,3)": resolved using org.apache.camel.camel-amqp [86]
- import org.apache.camel.component.hl7;version="[2.18,3)": resolved using org.apache.camel.camel-hl7 [108]
- import org.apache.camel.impl;version="[2.18,3)": resolved using org.apache.camel.camel-core [89]
- import org.apache.camel.model;version="[2.18,3)": resolved using org.apache.camel.camel-core [89]
- import org.apache.camel.spi;version="[2.18,3)": resolved using org.apache.camel.camel-core [89]
- import org.osgi.framework;version="[1.8,2)": resolved using org.apache.felix.framework [0]
- import org.slf4j;version="[1.7,2)": resolved using org.ops4j.pax.logging.pax-logging-api [5]
- import org.slf4j;version="[1.7,2)": resolved using org.ops4j.pax.logging.pax-logging-api [5]
- import org.slf4j;version="[1.7,2)": resolved using org.ops4j.pax.logging.pax-logging-api [5]
Warning: the below tree is a rough approximation of a possible resolution
demograficos-bundle [110]
+- org.apache.geronimo.specs.geronimo-jms_1.1_spec [122]
|  +- javax.transaction-api [63]
|     +- javax.enterprise.cdi-api [61]
|     |  +- javax.el-api [60]
|     |  +- org.apache.servicemix.bundles.javax-inject [83]
|     |  +- javax.interceptor-api [62]
|     +- javax.interceptor-api [62]
+- org.apache.camel.camel-core [89]
|  +- org.ops4j.pax.logging.pax-logging-api [5]
|  |  +- org.apache.karaf.services.eventadmin [3]
|  |     +- org.apache.felix.metatype [2]
|  |     +- org.apache.felix.configadmin [7]
|  +- org.apache.servicemix.bundles.spring-tx [102]
|     +- org.ops4j.pax.logging.pax-logging-api [5]
|     +- org.apache.servicemix.bundles.aopalliance [93]
|     +- javax.transaction-api [63]
|     +- org.apache.servicemix.bundles.spring-aop [95]
|     |  +- org.ops4j.pax.logging.pax-logging-api [5]
|     |  +- org.apache.servicemix.bundles.aopalliance [93]
|     |  +- org.apache.commons.pool [92]
|     |  +- org.apache.servicemix.bundles.spring-beans [96]
|     |  |  +- org.ops4j.pax.logging.pax-logging-api [5]
|     |  |  +- org.apache.servicemix.bundles.javax-inject [83]
|     |  |  +- org.apache.servicemix.bundles.spring-core [99]
|     |  |     +- org.ops4j.pax.logging.pax-logging-api [5]
|     |  +- org.apache.servicemix.bundles.spring-core [99]
|     +- org.apache.servicemix.bundles.spring-beans [96]
|     +- org.apache.servicemix.bundles.spring-core [99]
|     +- org.apache.servicemix.bundles.spring-context [97]
|        +- org.apache.geronimo.specs.geronimo-jms_2.0_spec [75]
|        |  +- javax.transaction-api [63]
|        +- org.ops4j.pax.logging.pax-logging-api [5]
|        +- org.apache.servicemix.bundles.javax-inject [83]
|        +- org.apache.servicemix.bundles.spring-expression [100]
|        |  +- org.ops4j.pax.logging.pax-logging-api [5]
|        |  +- org.apache.servicemix.bundles.spring-core [99]
|        +- org.apache.servicemix.bundles.aopalliance [93]
|        +- javax.interceptor-api [62]
|        +- org.apache.servicemix.bundles.spring-aop [95]
|        +- org.apache.servicemix.bundles.spring-beans [96]
|        +- org.apache.servicemix.bundles.spring-core [99]
+- org.apache.camel.camel-amqp [86]
|  +- org.apache.camel.camel-core [89]
|  +- org.apache.geronimo.specs.geronimo-jms_2.0_spec [75]
|  +- org.apache.qpid.jms.client [81]
|  |  +- org.apache.geronimo.specs.geronimo-jms_2.0_spec [75]
|  |  +- org.ops4j.pax.logging.pax-logging-api [5]
|  |  +- io.netty.handler [57]
|  |  |  +- io.netty.codec [54]
|  |  |  |  +- io.netty.buffer [53]
|  |  |  |  |  +- io.netty.common [56]
|  |  |  |  |     +- org.ops4j.pax.logging.pax-logging-api [5]
|  |  |  |  +- io.netty.transport [59]
|  |  |  |  |  +- io.netty.resolver [58]
|  |  |  |  |  |  +- io.netty.common [56]
|  |  |  |  |  +- io.netty.buffer [53]
|  |  |  |  |  +- io.netty.common [56]
|  |  |  |  +- io.netty.common [56]
|  |  |  +- io.netty.buffer [53]
|  |  |  +- io.netty.transport [59]
|  |  |  +- io.netty.common [56]
|  |  +- io.netty.codec-http [55]
|  |  |  +- io.netty.codec [54]
|  |  |  +- io.netty.handler [57]
|  |  |  +- io.netty.buffer [53]
|  |  |  +- io.netty.transport [59]
|  |  |  +- io.netty.common [56]
|  |  +- org.apache.qpid.proton-j [82]
|  |  +- io.netty.buffer [53]
|  |  +- io.netty.transport [59]
|  |  +- io.netty.common [56]
|  +- org.apache.camel.camel-jms [90]
|     +- org.apache.camel.camel-core [89]
|     +- org.apache.geronimo.specs.geronimo-jms_2.0_spec [75]
|     +- org.ops4j.pax.logging.pax-logging-api [5]
|     +- org.apache.servicemix.bundles.spring-jms [101]
|     |  +- org.apache.geronimo.specs.geronimo-jms_2.0_spec [75]
|     |  +- org.ops4j.pax.logging.pax-logging-api [5]
|     |  +- org.apache.servicemix.bundles.spring-tx [102]
|     |  +- org.apache.servicemix.bundles.spring-expression [100]
|     |  +- org.apache.servicemix.bundles.aopalliance [93]
|     |  +- org.apache.servicemix.bundles.spring-aop [95]
|     |  +- io.netty.transport [59]
|     |  +- org.apache.servicemix.bundles.spring-beans [96]
|     |  +- org.apache.servicemix.bundles.spring-core [99]
|     |  +- io.netty.common [56]
|     |  +- org.apache.servicemix.bundles.spring-context [97]
|     +- org.apache.servicemix.bundles.spring-tx [102]
|     +- org.apache.servicemix.bundles.spring-beans [96]
|     +- org.apache.servicemix.bundles.spring-core [99]
|     +- org.apache.servicemix.bundles.spring-context [97]
+- org.apache.camel.camel-hl7 [108]
|  +- org.apache.camel.camel-core [89]
|  +- io.netty.codec [54]
|  +- org.ops4j.pax.logging.pax-logging-api [5]
|  +- org.apache.camel.camel-netty4 [106]
|  |  +- org.apache.camel.camel-core [89]
|  |  +- io.netty.codec [54]
|  |  +- org.ops4j.pax.logging.pax-logging-api [5]
|  |  +- io.netty.handler [57]
|  |  +- io.netty.transport [59]
|  |  +- io.netty.buffer [53]
|  |  +- org.apache.commons.pool [92]
|  |  +- io.netty.transport-native-epoll [105]
|  |  |  +- io.netty.buffer [53]
|  |  |  +- io.netty.transport [59]
|  |  |  +- io.netty.common [56]
|  |  +- io.netty.common [56]
|  +- org.apache.mina.core [109]
|  |  +- org.ops4j.pax.logging.pax-logging-api [5]
|  +- io.netty.buffer [53]
|  +- ca.uhn.hapi.osgi-base [107]
|  |  +- org.apache.geronimo.specs.geronimo-jms_2.0_spec [75]
|  +- io.netty.transport [59]
+- org.apache.felix.framework [0]
+- org.ops4j.pax.logging.pax-logging-api [5]
WARNING: multiple bundles are exporting package javax.jms
- org.apache.geronimo.specs.geronimo-jms_2.0_spec [75]
- org.apache.geronimo.specs.geronimo-jms_1.1_spec [122]

我真的遇到一些麻烦,了解jar/bundle版本如何在karaf下一起工作。

有什么想法吗?也许我应该更改pom.xml

中的felix插件

看起来您声明了自己的捆绑包,即导出Javax.jms包为1.1版,而Artemis依赖于2.0版中的Javax.jms的捆绑包,请确保您还依赖于2.0版Javax.jms版本(因为那是Artemis使用的版本(,您的问题将消失。

最新更新