Caused by: java.lang.NoSuchMethodError:
org.apache.log4j.Category.log
Lorg/apache/log4j/Level;Ljava/lang/Object;Ljava/lang/Throwable;)V
at
org.apache.commons.logging.impl.Log4JCategoryLog.debug(Log4JCategoryLog.java:94)
at
org.apache.catalina.startup.TldConfig.execute(TldConfig.java:314)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4282)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at
org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
at
org.apache.catalina.core.StandardService.start(StandardService.java:480)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
at
org.apache.catalina.startup.Catalina.start(Catalina.java:556)
... 6 more
原因:commons-logger.jar和你的log4j.jar版本不兼容。前者是对后者的一个封装,而hibernate中主要是使用前者。前者的功能就是:它封装了一些通常的日志类,比如log4j,java.util.logging.Logger
等,使用的log4j,但是由于版本不对,commons-logger中用了log4j中的那个类,在当前的log4j版本中已经不存在了,所以报错
解决方法:
将class目录下commons-logging.properties
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog
更改为
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger