今天开发过程中,运行一个含访问数据库的main程序,一直在报错,无法正常运行。本以为是没有部署好,重新部署后,还是不行。报错信息如下:
SLF4J: This version of SLF4J requires log4j version 1.2.12 or later. See also http://www.slf4j.org/codes.html#log4j_version
Exception in thread "main" java.lang.NoSuchFieldError: TRACE
at org.jboss.logging.Log4jLogger.translate(Log4jLogger.java:58)
at org.jboss.logging.Log4jLogger.isEnabled(Log4jLogger.java:39)
at org.jboss.logging.Logger.isTraceEnabled(Logger.java:99)
at org.hibernate.internal.CoreMessageLogger_$logger.isTraceEnabled(CoreMessageLogger_$logger.java:415)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:145)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1797)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1755)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1840)
..........
原因:项目中导入的log4j版本和jboss的的log4j版本不一致(jboss的版本>项目中导入的版本)。
问题表象和解决方案:(下图为main程序依赖的部分jar截图及解决方案。)
解决过程中参考的博文如下:http://blog.csdn.net/renminyan/archive/2009/05/05/4150645.aspx