【问题标题】:CQ5.6.1- Log4j in Osgi bundle not detectingCQ5.6.1- Osgi 包中的 Log4j 未检测到
【发布时间】:2014-12-09 08:22:16
【问题描述】:

我正在使用我的客户在 CQ5.6.1 中提供的 jar 文件。 jar 文件中的某些类需要 log4j。因此,我使用 Eclipse 创建了一个包含客户端 jar 和 log4j jar 文件的 Osgi 包。我将它安装到 CQ 的 Osgi Bundles 中并激活了该包。客户端 jar 中的类从我的组件 jsp 中正确调用,但客户端 jar 无法找到 log4j 类。我收到错误java.lang.ClassNotFoundException: org.apache.log4j.PropertyConfigurator not found。我还尝试将 log4j jar 放入 CQ 中我的 app\ 下的安装文件夹中,但这也没有帮助。我在谷歌搜索,但还没有找到合适的解决方案。非常感谢任何解决问题的帮助。谢谢。

【问题讨论】:

    标签: log4j osgi aem


    【解决方案1】:

    您的 log4j 包需要导出 org.apache.log4j 包,客户端包需要导入它。 Sling 脚本可以查看所有导出的包。

    您可以使用位于 /system/console/bundles 的 OSGi 控制台来验证这些导出和导入是否正确,客户端包的状态页面应显示它从 log4j 包导入包。

    如果导出正确,原因也可能是某些 log4j 或客户端代码使用线程上下文类加载器 (TCCL) 加载 PropertyConfigurator 或其他无法与 OSGi 配合使用的机制。如果是 TCCL,您可以通过自己围绕加载 PropertyConfigurator 的代码设置 TCCL 来解决问题。

    CQ 确实提供了开箱即用的 slf4j 日志记录 API,因此如果您能说服您的客户切换到那些可能更容易的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      相关资源
      最近更新 更多