我在类路径中有commons-logging.jar(v1.0.4)和log4j-1.2.8.jar,并且遇到以下运行时错误:
Caused by: 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)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)
答案 0 :(得分:13)
如果您使用Maven,则必须确保在pom.xml中声明commons-logging和log4j
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
如果您只声明公共记录,则会收到错误Log4JLogger cannot be found or is not useable
答案 1 :(得分:4)
这是一个类路径问题,我们在类路径中确实有另一个版本的log4j。谢谢Nathan Ryan!
答案 2 :(得分:3)
使用log4j-2.x和commons-logging-1.2有这个问题。恢复到log4j 1.2.x并且对全世界都很好。
答案 3 :(得分:2)
当我尝试在我的eclipse 3.6中运行tomcat 7上的Web应用程序时,有时会看到此错误。它只是通过重启eclipse而无处不在。
在服务器上的几个(!)“清理所有项目”和Web应用程序的新部署之后,应用程序再次运行。也许其他人知道确切的“咒语”来解决这个谜团而不经过反复试验?
答案 4 :(得分:1)
如果要为记录器提供实现,则实现必须定义一个以java.lang.String作为参数的构造函数。否则,您将收到“org.apache.commons.logging.LogConfigurationException:用户指定的日志类'...'无法找到或无法使用。” apache wiki的faq页面说明了这一点。
您是否正在创建任何特定项目,如网络服务或春天等?如果是,那么请分析项目特定的属性文件,这些文件将具有引用Logger的属性,如
<property name="logger">javax.servlet,org.apache.commons.logging</property>
如果你有一个带servlet的java项目。
答案 5 :(得分:1)
我收到了同样的例外。
我确实有logger的实现。
它没有将String作为参数的构造函数。
我实现了这样的构造函数,并为我解决了这个问题。
答案 6 :(得分:1)
当apache commons登录jar在我的类路径中但是log4j jar在某种程度上缺失时,我收到了这个错误。一旦我将log4j jar添加到我的类路径,这个错误就消失了。
答案 7 :(得分:1)
这里有一个答案 Commons-logging with log4j2
包括库:
log4j-jcl
另请参阅:
https://logging.apache.org/log4j/2.x/faq.html#which_jars
答案 8 :(得分:0)
此错误似乎非常普遍。要获取更多详细信息,请使用以下选项启动JVM:
userInfo
就我而言,发现一些缺少的依赖项。
-Dorg.apache.commons.logging.diagnostics.dest=STDOUT
将log4j.jar添加到类路径中可以解决此问题。
答案 9 :(得分:0)
我遇到了这个问题,发现这是由于与log4j jar有关的类路径冲突引起的。 当我在项目中使用Maven时,解决方法是为log4j添加依赖项管理,如下所示。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>
</dependencyManagement>