Eclipse “卡拉夫蓝图”;“失败”;在扩展控制台时

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显示未找到命令

我使用的是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”一节中给出的说明:

  • 让我们试着构建jar:我确实是从Eclipse构建jar的。文件导出javajar文件

  • 然后运行“mvn安装”:这就是我不理解Maven将如何使用.jar文件的地方。它正在寻找pom.xml。因此,我进入根目录并运行“mvn安装”。它成功地通过了

  • osgi:安装..,也成功通过了。但我怀疑Blueprint.xml没有通过

  • 我需要以下方面的帮助:

  • 如何解决这个问题

  • 如何在Karaf中知道每个捆绑包安装了哪些命令

  • 在步骤1中创建的.jar文件不同于使用pom.xml的“mvn安装”。我有什么遗漏吗?如何让mvn使用.jar

  • 为什么blueprint.xml没有加载

  • 提前谢谢

    此外,我们还有一个stackoverflow:

    2013-07-27 19:44:30733错误打印扩展器:2 |BlueprintContainerImpl
    |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论坛上提出了这个问题。