2016-09-05 3 views
1

Я пытаюсь сделать OSGify мои проекты.OSGi зависимость для org.beanio не разрешает

Я использую 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) 

Ошибка:

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

Я явно не импортируя beanio себя: он получает ее из org.jboss.fuse.bom для этого предохранителя. camel-beanio version - 2.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 даже не существует. Итак, я не знаю, откуда это получается: «[2.1,3]».

Я разработал, как указать 2.1.0, но тогда он просто жалуется, что не может найти 2.1.0.

И что мне делать? Ничего не экспортирует 2.1.0. Но я не могу избавиться от него из Import-Package, потому что * включает его после поиска кода.

+0

вы, кажется недоразумением сообщение об ошибке. В нем говорится, что для него требуется «org.beanio' version> = 2.1.0 и NOT> = 3.0.0 ... синтаксис' [2.1,3] 'означает 2.1 включительно, до 3 эксклюзивных. – Renato

+0

Вы можете установить camel-beanio сначала, выполнив 'install: feature camel-beanio' в оболочке плавкого предохранителя. И вы всегда должны использовать ту же версию в своем проекте, что и использование Fuse. –

ответ

1

Как вы сами сказали: «Версия для верблюда-beanio - 2.15.1.redhat-621084, и это использует org.beanio v2.1.0».

Вам просто нужно это в вашем ПОМ:

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

Это в Maven Central поэтому он должен работать.

Как я уже упоминал в комментарии, сообщение об ошибке, которое вы получили, говорит вам, что вам нужен пакет org.beanio с версией> = 2.1.0 и NOT> = 3.0.

Вышеупомянутая зависимость предоставляет этот пакет, как вы можете видеть here.

Однако, похоже, это не комплект OSGi ... так что вам нужно будет wrap it.

+0

Я добавил эту точную зависимость. Не исправляет. Я понимаю, что он ищет> v2.1.0 ... как я уже сказал, 3.0 даже не существует. Я должен его обернуть? Ах, я вижу комментарий Клауса ... даст это. – djb

+0

Итак, функции: install работал. Однако добавление зависимости не помогло. – djb

+0

Итак, ваша инфраструктура обертывает банку для вас ... Если вы ее обернули сами, используя Bnd, Pax :: wrap или osgi-run gradle plugin, это тоже сработает. – Renato

1

Включить зависимость в features.xml, как показано ниже:

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

Затем, команды типа features:refreshurl и установить пакет

Смежные вопросы