关于SLF4J Exception异常处理

Failed to load class org.slf4j.impl.StaticLoggerBinder

This error is reported when the org.slf4j.impl.StaticLoggerBinder class could not be loaded into memory. This happens when no appropriate SLF4J binding could be found on the class path. Placing one (and only one) of slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem.

As of SLF4J version 1.6, in the absence of a binding, SLF4J will default to a no-operation (NOP) logger implementation.

You can download SLF4J bindings from the project download page.

 

使用hiberate新建库的错误代码 <embed height="15" width="14" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptaccess="always" quality="high" flashvars="clipboard=SLF4J%3A%20Failed%20to%20load%20class%20%22org.slf4j.impl.StaticLoggerBinder%22.%0ASLF4J%3A%20See%20http%3A%2F%2Fwww.slf4j.org%2Fcodes.html%23StaticLoggerBinder%20for%20further%20details.%0AException%20in%20thread%20%22main%22%20java.lang.NoClassDefFoundError%3A%20org%2Fslf4j%2Fimpl%2FStaticLoggerBinder%0A%09at%20org.slf4j.LoggerFactory.getSingleton(LoggerFactory.java%3A223)%0A%09at%20org.slf4j.LoggerFactory.bind(LoggerFactory.java%3A120)%0A%09at%20org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java%3A111)%0A%09at%20org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java%3A269)%0A%09at%20org.slf4j.LoggerFactory.getLogger(LoggerFactory.java%3A242)%0A%09at%20org.slf4j.LoggerFactory.getLogger(LoggerFactory.java%3A255)%0A%09at%20org.hibernate.cfg.Configuration.%3Cclinit%3E(Configuration.java%3A165)%0A%09at%20com.bjsxt.usermgr.util.ExportDB.main(ExportDB.java%3A11)%0ACaused%20by%3A%20java.lang.ClassNotFoundException%3A%20org.slf4j.impl.StaticLoggerBinder%0A%09at%20java.net.URLClassLoader%241.run(URLClassLoader.java%3A200)%0A%09at%20java.security.AccessController.doPrivileged(Native%20Method)%0A%09at%20java.net.URLClassLoader.findClass(URLClassLoader.java%3A188)%0A%09at%20java.lang.ClassLoader.loadClass(ClassLoader.java%3A306)%0A%09at%20sun.misc.Launcher%24AppClassLoader.loadClass(Launcher.java%3A276)%0A%09at%20java.lang.ClassLoader.loadClass(ClassLoader.java%3A251)%0A%09at%20java.lang.ClassLoader.loadClassInternal(ClassLoader.java%3A319)%0A%09...%208%20more" src="http://zhoujingxian.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf">
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".  
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.  
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder  
    at org.slf4j.LoggerFactory.getSingleton(LoggerFactory.java:223)  
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:120)  
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:111)  
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:269)  
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:242)  
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:255)  
    at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:165)  
    at com.bjsxt.usermgr.util.ExportDB.main(ExportDB.java:11)  
Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder  
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)  
    at java.security.AccessController.doPrivileged(Native Method)  
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)  
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)  
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)  
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)  
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)  
    ... 8 more  

 hibernate工程里面使用的是hibernate3.5的Lib。

 

提示信息中多次提到SLF4J,google了一下,才发现这是现在的Hibernate使用SLF4J API记录日志,所以在Hibernate的lib中,不再提供Log4J的包,而大部分框架依然使用Log4J记录日志,这样导致了兼容性问题。
解决办法,两步:

        一、在编译路径中添加Log4J的包,比如我一直在用的log4j-1.2.8.jar;

        二、再添加一个叫做slf4j-log4j12-1.5.11.jar的包进行转换,注意到这里的log4j12,可能对应的是log4j 1.2版本。解决!

 补充:
SLF4J官方下载:http://www.slf4j.org/download.html
下载对应版本后加压找到slf4j-log4j12-XX.jar即可

 


加上hibernate所有必要包后,还包如下错误:

 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [F:\gcmworkspace\Framwo\WebContent\WEB-INF\classes\applicationContext-hibernate.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.orm.hibernate3.LocalSessionFactoryBean]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)

需要在classpath中添加另一个包:slf4j-nop-1.5.2.jar
麻烦的是需要单独下载.....


java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: See  http://www.slf4j.org/codes.html#StaticLoggerBinder for further details

 

posted @ 2011-12-08 00:03  birlt  阅读(830)  评论(0编辑  收藏  举报