1

我在网络应用程序中工作。我尝试使用 WEB-INF/lib/*.jar 从我的战争中删除 jar 重复。这帮助我将罐子排除在我的战争之外。在 websphere 中部署耳朵时,我遇到了以下问题,

我检查了我的战争类路径,它包含 log4j.jar 和 common-logging1.1.jar。

请帮忙!!!

错误日志:

[7/6/12 22:34:10:577 CEST] 00000165 webapp        E com.ibm.ws.webcontainer.webapp.WebApp notifyServletContextCreated SRVE0283E: Exception caught while initializing context: {0}
    org.apache.commons.logging.LogConfigurationException: User-specified log class 'org.apache.commons.logging.impl.Log4JLogger' cannot be found or is not useable.
    at org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:874)
    at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:604)
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:336)
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:310)
4

1 回答 1

2

WebSphere 6.1 包括 Commmons Logging 本身,由比您的 Web 应用程序更高的类加载器加载。(您可以通过将此 JSP部署到您的应用程序并输入其中一个 JCL 类名称来查看从何处加载 JCL 类。)因此您已将 JCL 配置为加载 log4j 类,但更高级别(父)类加载器可以从较低级别的 Web 应用程序类加载器中看不到 log4j 类。

因此,一种解决方案,特别是如果您需要 JCL 的 1.1 版本而不是 WebSphere 包含的版本 (1.0),就是将您的 WebSphere 类加载器策略更改为parent last

由于更改类加载器策略可能会产生其他影响,因此另一种选择是使用 WebSphere 包含的版本并使用一种技术告诉它使用 log4j 作为应用程序中的日志记录机制。但请注意,由于 WebSphere 6.1 不包括整个 JCL1.0,因此您需要在您的应用程序中部署一个完整的 JCL 1.0

于 2012-07-09T15:35:50.060 回答