2013-10-10 4 views
1

Я новичок в maven.Зависимость связки не может быть решена из-за отсутствия ограничений на пакет импорта. Как добавить зависимость jar в пакете osgi с использованием maven?

Я пытаюсь импортировать зависимость jar (com.jcraft.jsch) в моем проекте контроллера opendaylight. Код успешно компилируется. Но когда контроллер запускается, он выдает следующие ошибки.


ENTRY org.opendaylight.controller.samples.ssr 4 0 2013-10-11 10: 25: 14,624 СООБЩЕНИЕ FrameworkEvent ОШИБКА СТЕК 0 org.osgi.framework.BundleException: Расслоение "org.opendaylight.controller.samples.ssr_0.4.0.SNAPSHOT [36]" не может быть разрешено. Причина: Отсутствие ограничений: Import-Package: com.jcraft.jsch; version = "0.0.0" at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError (AbstractBundle.java:1332) at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException (AbstractBundle .java: 1316) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker (BundleHost.java:323) at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume (AbstractBundle.java : 390) at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle (Framework.java:1176) at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles (StartLevelManager.java:559)) at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles (StartLevelManager.java:544) at org.eclipse.osgi.framewor k.internal.core.StartLevelManager.incFWSL (StartLevelManager.java:457) на org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel (StartLevelManager.java:243) на org.eclipse.osgi.framework. internal.core.StartLevelManager.dispatchEvent (StartLevelManager.java:438) at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent (StartLevelManager.java:1) at org.eclipse.osgi.framework.eventmgr. EventManager.dispatchEvent (EventManager.java:230) at org.eclipse.osgi.framework.eventmgr.EventManager $ EventThread.run (EventManager.java:340) 2013-10-11 10: 25: 14.627 IST [org.opendaylight .controller.logging.bridge.internal.LogListenerImpl @ 190c63b2] ERROR ooclogging.bridge.OSGI2SLF4J - Bundle: org.opendaylight.controller.samples.ssr Сообщение: FrameworkEvent ОШИБКА Исключение: org.osgi .framework.BundleException: пакет «org.opendaylight.controller.samples.ssr_0.4.0.SNAPSHOT [36]» не может быть разрешен. Причина: Отсутствие ограничений: Import-Package: com.jcraft.jsch; version = "0.0.0"


Я импортировал этот пакет. Пакет org.opendaylight.controller.samples.ssr добавлен мной в него. В принципе, я изменил один из пакетов в образцах. Проблема заключается в том, что я пытаюсь импортировать одну jar-зависимость com.jcraft.jsch в один из классов этого пакета. Но есть проблема с импортом этой банки.

Я пропустил эту проблему за последние пару недель. Любые предложения или решения, пожалуйста. Заранее спасибо.

+0

Пакет org.opendaylight.controller.samples.ssr не доступен ни в одном пакете, или если он доступен, он не экспортируется. –

+0

Спасибо вам :) Не могли бы вы еще раз взглянуть на него? Я немного изменил этот запрос. – user793735

+0

Можете ли вы установить telnet на систему равноденствия? Если да, то что говорит команда «packages com.jcraft.jsch»? Я думаю, что это не в контейнере OSGi. Если он там, я буду удивлен. Это может быть в одной из ваших фляг, но вы уверены, что они перечислены в заголовке Manage Export-Package? Если он находится в этой банке и указан пакет, это пакет в состоянии ACTIVE (команда ss в консоли)? –

ответ

1

Я столкнулся с той же проблемой в OpenDaylight. Вот решение, что я понял, после некоторых проб и ошибок (Дайте мне знать, если вы нашли какой-либо шаг, чтобы быть ненужным):

Зависимость Maven в вашем случае будет иметь, Id группы, как com.jcraft, Артефакт Id как jsch, Версия как 0.1.31 (скажем) и импортированный пакет ias com.jcraft.jsch. Кроме того, ваш модуль OpenDaylight - org.opendaylight.controller.samples.ssr.

В файле распределение/opendaylight/opendaylight-OSGi-launcher.launch и распределение/opendaylight/opendaylight-OSGi-пусковая-local.launch, добавить зависимость и модуль для следующих тегов:

... 
<stringAttribute key="target_bundles" value="[email protected]:default,[email protected]:default, [email protected]:default ..."/> 
. 
. 
<stringAttribute key="workspace_bundles" value="[email protected]:default,[email protected]:default, ..."/> 
... 

В файле распределение/opendaylight/opendaylight.target, добавить запись единицы как,

... 
<unit id="com.google.gson" version="2.1.0"/> 
<unit id="com.jcraft.jsch" version="0.1.31"/> 
... 

В распределения/p2site/pom.xml, добавьте запись артефакт как,

... 
<artifact> 
    <id>com.google.code.gson:gson:2.1</id> 
    <transitive>false</transitive> 
    <override>false</override> 
</artifact> 
<artifact> 
    <id>com.jcraft:jsch:0.1.31</id> 
    <transitive>false</transitive> 
    <override>false</override> 
</artifact> 
... 

В достоянию/opendaylight/pom.xml, добавить запись о зависимостях как,

... 
<dependency> 
    <groupId>com.google.code.gson</groupId> 
    <artifactId>gson</artifactId> 
    <version>2.1</version> 
    <scope>compile</scope> 
</dependency> 
<dependency> 
    <groupId>com.jcraft</groupId> 
    <artifactId>jsch</artifactId> 
    <version>0.1.31</version> 
</dependency> 
... 

Do полная сборка и запуск OpenDaylight maven. Он должен работать нормально. В случае, если эта зависимость имеет дополнительные закодированные зависимости, вы можете снова получить ошибку. Импортируйте эти зависимости одинаково.