Eclipse “卡拉夫蓝图”;“失败”;在扩展控制台时
我使用的是Karaf 2.3.1。我正在关注ApacheKaraf手册练习“扩展控制台”,第105页。我遵循了所有的说明,同上,有一些偏差。我能够将bundle helloshell命令加载到Karaf中。它向我抛出了一个bundle Id。但是命令“test.hello”不起作用 karaf@root>osgi:classes显示org/apache/karaf.shell/samplesHelloShellCommand.class karaf@root>test.hello显示未找到命令 karaf@root>osgi:列表显示给定捆绑包的蓝图“失败” 我确实在以下步骤中偏离了“编译JAR”一节中给出的说明:Eclipse “卡拉夫蓝图”;“失败”;在扩展控制台时,eclipse,maven,osgi,apache-karaf,Eclipse,Maven,Osgi,Apache Karaf,我使用的是Karaf 2.3.1。我正在关注ApacheKaraf手册练习“扩展控制台”,第105页。我遵循了所有的说明,同上,有一些偏差。我能够将bundle helloshell命令加载到Karaf中。它向我抛出了一个bundle Id。但是命令“test.hello”不起作用 karaf@root>osgi:classes显示org/apache/karaf.shell/samplesHelloShellCommand.class karaf@root>test.hello显示未找到命令
|container.BlueprintContainerImpl 393 |7-org.apache.aries.blueprint.core-1.1.0 |无法启动包null的blueprint容器
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:570)[:1.7.0-ea]
at java.util.ArrayList.get(ArrayList.java:348)[:1.7.0-ea]
at org.apache.aries.blueprint.container.BlueprintContainerImpl.readDirectives
(BlueprintContainerImpl.java:211)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun
(BlueprintContainerImpl.java:283)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.container.BlueprintContainerImpl.run
(BlueprintContainerImpl.java:261)[7:org.apache.aries.blueprint.core:1.1.0]
at java.util.concurrent.Executors$RunnableAdapter.call
(Executors.java:471)[:1.7.0-ea]
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)[:1.7.0-ea]
at java.util.concurrent.FutureTask.run(FutureTask.java:166)[:1.7.0-ea]
at org.apache.aries.blueprint.container.ExecutorServiceWrapper.run
(ExecutorServiceWrapper.java:106)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run
(DiscardableRunnable.java:48)[7:org.apache.aries.blueprint.core:1.1.0]
at java.util.concurrent.Executors$RunnableAdapter.call
(Executors.java:471)[:1.7.0-ea]
at java.util.concurrent.FutureTask$Sync.innerRun (FutureTask.java:334)[:1.7.0-ea]
at java.util.concurrent.FutureTask.run (FutureTask.java:166)[:1.7.0-ea]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201
(ScheduledThreadPoolExecutor.java:178)[:1.7.0-ea]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run
(ScheduledThreadPoolExecutor.java:292)[:1.7.0-ea]
at java.util.concurrent.ThreadPoolExecutor.runWorker
(ThreadPoolExecutor.java:1110)[:1.7.0-ea]
at java.util.concurrent.ThreadPoolExecutor$Worker.run
(ThreadPoolExecutor.java:603)[:1.7.0-ea]
at java.lang.Thread.run(Thread.java:717)[:1.7.0-ea]
关于(1)
包启动了吗?您是否在启动时使用了osgi:install-s?如果没有,则应使用start[bundleId]启动捆绑包
关于(2)
在命令行发出帮助,它将列出所有可用的命令。使用command-h将为您提供命令本身的概述
关于(3)
忘记从eclipse创建一个不起作用的jar文件吧。只有使用maven pom,您才会有一个包含有效清单的捆绑包,除非您自己添加了它(我在您的描述中没有看到)
关于(4)
最有可能的情况是,您的包未启动,或者它不包含有效的清单,而该清单又不会启动blueprint extender
此外,所有这些问题通常最好在karaf用户邮件列表中提出
编辑:
要查找捆绑包失败的原因,请执行捆绑包:具有给定ID的捆绑包的信息
它还应该向您展示蓝图失败的原因 一,。对Bundle处于活动状态。但蓝图处于失败状态。2.我实际上在寻找一个osgi命令,它可以告诉我捆绑包的生命周期。我确实使用了osgi:list和osgi:classes,但它没有告诉我添加到包中的命令。谢谢你的建议,我确实在Nabble论坛上提出了这个问题。