Exception in thread "main" java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60)
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:151)
at com.erp.utility.Hibernatesession.getSession(Hibernatesession.java:24)
at com.erp.dao.Country_Dao.getcountryByname(Country_Dao.java:88)
at com.erp.service.Country_Service.getcountryByname(Country_Service.java:36)
at com.erp.storedata.Store_Data.main(Store_Data.java:24)
答案 0 :(得分:5)
使用较新版本的slf4j-api.jar。版本1.5.5和更早版本以及1.5.6及更高版本之间存在重大变化。使用1.5.6之后的版本,该错误应该消失。有关参考,请参阅http://www.slf4j.org/faq.html#IllegalAccessError。
答案 1 :(得分:0)
请在您的项目中添加以下文件:
slf4j-log4j12.jar
答案 2 :(得分:0)
答案 3 :(得分:0)
从构建路径中删除文件slf4j-api.jar。
答案 4 :(得分:0)
终于在我的 SpringBoot 应用中解决了这个问题。如果更新版本没有帮助,这可能会有所帮助。有时其他库可能会带来此依赖项的不同版本。这些是步骤:
logback-classic
和 log4j-over-slf4j
出现了这个问题。他们在spring-boot-starter-web
<exclusions><exclusion></exclusion></exclusions>
中使用 pom.xml
来处理出现此问题的库。就我而言,它看起来像这样: <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>logback-classic</artifactId>
<groupId>ch.qos.logback</groupId>
</exclusion>
<exclusion>
<artifactId>log4j-over-slf4j</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
参考文献:
http://www.slf4j.org/faq.html#IllegalAccessError
http://www.slf4j.org/codes.html#multiple_bindings