CQ5.6.1- Osgi包中的Log4j未检测到

时间:2014-12-09 08:22:16

标签: log4j osgi cq5

我正在使用我的客户在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放入我的app \ CQ下的安装文件夹中,但这也无济于事。我在谷歌搜索但尚未找到合适的解决方案。任何有助于解决的帮助都非常感谢。谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

如果导出正确,原因可能是某些log4j或客户端代码使用线程上下文类加载器(TCCL)或其他与OSGi不兼容的机制加载PropertyConfigurator。如果它是TCCL,你可以通过在加载PropertyConfigurator的代码周围设置TCCL来解决这些问题。

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