2016-09-05 1 views
1

Ich versuche OSGify meine Projekte.OSGi Abhängigkeit für org.beanio nicht auflösen

Ich verwende Fuse jboss-fuse-6.2.1.redhat-084, und wenn ich osgi:headers für das Paket anschaue, bekomme ich den roten Fehler 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) 

Fehler:

missing requirement osgi.wiring.package; (&(osgi.wiring.package=org.beanio)(version>=2.1.0)(!(version>=3.0.0))))

ich ausdrücklich nicht beanio selbst importieren: es wird sie von der org.jboss.fuse.bom für diese Sicherung. Die camel-beanio version ist 2.15.1.redhat-621084 und die verwendet org.beanio v2.1.0.

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

Ich habe grep durchsucht die osgi:classes und nichts mit v3.0. Auch v3.0 existiert nicht einmal. Also, ich weiß nicht, woher das "[2.1.3]" kommt.

Ich habe herausgefunden, wie man 2.1.0 spezifiziert, aber es beschwert sich dann, dass es 2.1.0 nicht finden kann.

Also was mache ich? Nichts exportiert 2.1.0. Aber ich kann es nicht von Import-Paket loswerden, weil * es nach dem Durchsuchen des Codes enthält.

+0

Sie scheinen die Fehlermeldung Missverständnisse werden. Es besagt, dass es 'org.beanio' version> = 2.1.0 und NOT> = 3.0.0 erfordert ... die Syntax' [2.1.3) 'bedeutet 2.1 inclusive, bis zu 3 exclusive. – Renato

+0

Sie können camel-beanio zuerst installieren, indem Sie 'install: feature camel-beanio' in der Sicherungs-Shell ausführen. Und Sie sollten in Ihrem Projekt immer dieselbe Version verwenden, die Fuse verwendet. –

Antwort

1

Wie du selbst gesagt hast: "Die camel-beanio-Version ist 2.15.1.redhat-621084 und verwendet org.beanio v2.1.0".

Sie müssen nur diese in Ihrem pom:

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

Das in Maven Central ist so sollte es funktionieren.

Wie ich in einem Kommentar erwähnt, sagt die Fehlermeldung, dass Sie das Paket org.beanio mit Version> = 2.1.0 und nicht> = 3.0 benötigen. Die obige Abhängigkeit bietet dieses Paket, wie Sie here sehen können.

Allerdings scheint dies kein OSGi-Paket zu sein ... also müssen Sie wrap it.

+0

Ich fügte diese genaue Abhängigkeit hinzu. Es repariert es nicht. Ich verstehe, dass es nach> v2.1.0 sucht ... wie gesagt, 3.0 gibt es nicht einmal. Ich muss es wickeln? Ah, ich sehe Claus's Kommentar ... wird es versuchen. – djb

+0

Also, die Funktionen: Installieren funktioniert. Das Hinzufügen der Abhängigkeit funktionierte jedoch nicht. – djb

+0

Ihr Framework wird also das Glas für Sie umhüllen ... Wenn Sie es selbst mit Bnd, Pax :: wrap oder dem osgi-run Gradle Plugin pluggten, würde es auch funktionieren. – Renato

1

Fügen Sie die Abhängigkeit in features.xml wie folgt:

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

, Typ features:refreshurl Befehl dann und installieren Sie das Bündel

Verwandte Themen