NoClassDefFoundError与另一个运行正常的类在同一个包中的类

时间:2014-09-23 18:43:55

标签: java maven aem osgi-bundle

我正在为AEM 6开发,我看到其中一个类的NoClassDefFoundError。这是我的maven项目的设置:

+- pom.xml
|
+- parent
|    |
|    '- pom.xml
|
+- content
|    |
|    '- pom.xml
|
'- bundles
     |
     +- pom.xml
     |
     +- taglib
     |    |
     |    '- pom.xml
     | 
     '- components
          |
          '- pom.xml

以下是有关正在发生的事情的更多细节:

  • bundle pom将所有子包指定为模块
  • 内容pom
    • 将包装指定为content-package并包含jcr_root
    • 指定taglib包和组件包作为依赖项和嵌入式
  • taglib pom.xml已将组件bundle指定为依赖项
  • 组件包有两个生成的类:Component.class和ComponentFactory.class
  • /system/console/bundles
  • 中所有已安装的捆绑包均处于有效状态
  • taglib捆绑包列出它导入包含类
  • 的包
  • 组件包列出了它导出包含类
  • 的包

如果我将行Component component = new Component()添加到我在jsp中使用的标记中,则代码运行正常。使用包含代码的标记加载我的页面可以很好地加载。

但是,如果我尝试实例化ComponentFactory factory = new ComponentFactory()之类的ComponentFactory,代码将完全构建,然后在运行时失败。使用标记加载我的网页会生成一个白页,错误日志会显示NoClassDefFoundError

我查看了错误,它似乎是一个类在编译时可用但在运行时没有在类路径中有问题的问题。我的困惑是两个类都在目标/类中,而.classpath文件似乎并不表示为什么会排除这些类。

非常感谢任何见解。

0 个答案:

没有答案