【问题标题】:ClassNotFoundException error in apache karafapache karaf 中的 ClassNotFoundException 错误
【发布时间】:2019-01-27 09:03:58
【问题描述】:

我在web.xml 文件中添加了contect-param 选项卡

<context-param>
    <param-name>blueprintLocation</param-name>
    <param-value>OSGI-INF/blueprint/blueprint.xml</param-value>
</context-param>

还有listner 文件中的web.xml

<listener>
    <listener-class>org.apache.aries.blueprint.web.BlueprintContextListener</listener-class>
</listener>

加载到 karaf 后,我收到以下错误:

java.lang.ClassNotFoundException:com.test.test.core.jsonstore-http-api 找不到 org.apache.aries.blueprint.web.BlueprintContextListener

如何解决这个问题?

【问题讨论】:

    标签: apache-karaf aries


    【解决方案1】:

    错误表明您的包可能没有在他的 MANIFEST.MF 文件中导入包 org.apache.aries.blueprint.web

    有几种方法可以解决这个问题,如果你使用maven-bundle-plugin,你可以手动将包添加到Import-Package指令中,就像这样:

    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Import-Package>
            org.apache.aries.blueprint.web,
            *
            </Import-Package>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
    

    如果您使用其他工具来生成清单,它应该与此类似。

    【讨论】:

    • 只是为了解释为什么会发生这种情况......通常,maven-bundle-plugin 通过扫描您的类及其导入来找到您需要的包。在这种情况下,依赖项仅在蓝图文件中。所以自动扫描找不到。
    • 感谢您的回复,我在pom.xml中的import package标签中添加了org.apache.aries.blueprint.web,和您提到的一样,但是仍然存在错误。当我复制捆绑包的战争文件并粘贴到 karaf 的部署文件夹时,该错误已经消失。有没有其他办法解决?
    • 我的主要目标是使用此处提到的 aries 蓝图在 servlet 应用程序中注入捆绑包stackoverflow.com/questions/51930549/…,您能帮忙吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2012-10-08
    • 2012-07-23
    • 2012-10-28
    相关资源
    最近更新 更多