我是maven的新手。
我正在尝试在我的opendaylight控制器项目中导入jar依赖项(com.jcraft.jsch
)。代码编译成功。但是当控制器运行时,它会引发以下错误。
!ENTRY org.opendaylight.controller.samples.ssr 4 0 2013-10-11 10:25:14.624 !MESSAGE FrameworkEvent ERROR !堆栈0 org.osgi.framework.BundleException:无法解析包“org.opendaylight.controller.samples.ssr_0.4.0.SNAPSHOT [36]”。原因:缺少约束:Import-Package:com.jcraft.jsch;版本= “0.0.0” 在org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332) at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316) 在org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323) 在org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390) 在org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176) 在org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559) 在org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544) 在org.eclipse.osgi.framework.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) 在org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1) 在org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) 在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]错误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;版本= “0.0.0”
我已导入该包。我添加了包org.opendaylight.controller.samples.ssr。基本上,我修改了样本中的一个包。 问题是我试图在这个包中的一个类中导入一个jar依赖项com.jcraft.jsch。但是导入这个jar有一个问题。
过去几周我在这个问题之后一直在蠢蠢欲动。任何建议或解决方案请。提前谢谢。
答案 0 :(得分:1)
我在OpenDaylight中遇到了同样的问题。这是我在经过一些试验和错误后想出来的解决方案(如果您发现任何不必要的步骤,请告诉我):
您案例中的Maven依赖关系,Group Id为 com.jcraft ,Artifact Id为 jsch ,版本为 0.1.31 (比如说)和进口包装 com.jcraft.jsch 。此外,您的OpenDaylight模块是 org.opendaylight.controller.samples.ssr 。
在文件 distribution / opendaylight / opendaylight-osgi-launcher.launch 和 distribution / opendaylight / opendaylight-osgi-launcher-local.launch 中,添加您的依赖项和模块到以下标签:
...
<stringAttribute key="target_bundles" value="com.jcraft.jsch@default:default,ch.qos.logback.classic@default:default, ch.qos.logback.core@default:default ..."/>
.
.
<stringAttribute key="workspace_bundles" value="org.opendaylight.controller.samples.ssr@default:default,org.opendaylight.controller.arphandler@default:default, ..."/>
...
在档案分发/ opendaylight / opendaylight.target 中,添加单位条目,
...
<unit id="com.google.gson" version="2.1.0"/>
<unit id="com.jcraft.jsch" version="0.1.31"/>
...
在 distribution / 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>
...
在 commons / 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>
...
完成一个完整的OpenDaylight maven构建并运行。它应该工作正常。如果此依赖关系进一步链接了依赖关系,则可能会再次出现错误。以相同的方式导入这些依赖项。