我正在使用 Karaf 2.3.1。我正在关注 Apache Karaf 手册练习“扩展控制台”页面编号。105. 我按照所有指示同上,但有一些偏差。我能够将捆绑包 HelloShellCommand 加载到 Karaf 中。它给了我一个捆绑ID。但是命令“test.hello”不起作用。
karaf@root> osgi:classes 显示 org/apache/karaf.shell/samplesHelloShellCommand.class
karaf@root> test.hello 显示找不到命令
karaf@root> osgi:list 显示给定捆绑包的蓝图“失败”。
在以下步骤中,我确实偏离了“编译 JAR”部分中的给定指令:
让我们尝试构建 jar:我确实从 Eclipse 构建了 jar。文件-导出-Java-Jar 文件。
然后运行“mvn install”:这是我不明白 Maven 将如何使用 .jar 文件的地方。它正在寻找 pom.xml。所以,我进入根目录并运行“mvn install”。顺利通过了。
osgi:install ..,也成功通过了。但我怀疑 Blueprint.xml 没有通过。
我需要帮助:
如何解决这个问题?
如何在 Karaf 中知道每个捆绑软件安装了哪些命令?
在步骤 1 中创建的 .jar 文件与使用 pom.xml 的“mvn install”不同。有什么我想念的吗?如何让 mvn 使用 .jar?
为什么 blueprint.xml 没有加载?
提前致谢
此外,我们有这个stackoverflow:
2013-07-27 19:44:30,733 | 错误 | rint 扩展器:2 | BlueprintContainerImpl
| 容器.BlueprintContainerImpl 393 | 7 - org.apache.aries.blueprint.core - 1.1.0 | 无法启动 bundle null 的蓝图容器
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]