我该如何解决这个SLF4J错误

时间:2013-08-14 17:58:50

标签: hibernate java-ee slf4j

我正在编写一个我需要Hibernate技术的项目。我得到了这个堆栈跟踪,我不知道如何解决它。有什么帮助吗?

这是我的堆栈跟踪,我遇到了这两个错误:

  

SLF4J:slf4j-api 1.6.x(或更高版本)与此绑定不兼容。   SLF4J:您的绑定是1.5.5或更早版本。 SLF4J:升级你的   绑定到1.6.x版。或2.0.x

这是我的HibernateUtils.class

  

package com.forum.utils;

     

import org.hibernate.HibernateException; import org.hibernate.Session;   import org.hibernate.SessionFactory;进口   org.hibernate.cfg.AnnotationConfiguration;

     

public class HibernateUtils {private static final SessionFactory   的sessionFactory;

     

//Créeuneunique Instide de laSessionFactoryàpartirde //   hibernate.cfg.xml static {try {sessionFactory = new   AnnotationConfiguration()。配置()                     .buildSessionFactory(); } catch(HibernateException ex){throw new RuntimeException(“Problèmedeconfiguration:”                     + ex.getMessage(),ex); }}

     

// Renvoie une session Hibernate public static Session getSession()   抛出HibernateException {return sessionFactory.openSession(); }   }

此错误从此行触发:

s = HibernateUtils.getSession();

hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
  <session-factory>

      <property name="connection.driver_class">org.postgresql.Driver</property>
      <property name="connection.url">jdbc:postgresql://localhost:5432/projetForum</property>
      <property name="connection.username">postgres</property>
      <property name="connection.password">esct</property>
      <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>

      <!-- Comportement pour la conservation des tables -->
      <property name="hbm2ddl.auto">update</property>

      <!-- Activation : affichage en console, commentées et formatées -->
      <property name="show_sql">true</property>
      <property name="hibernate.format_sql">true</property>
      <property name="use_sql_comments">true</property>

      <!-- Fichiers à mapper -->
      <mapping class="com.forum.beans.Utilisateur" />
      <mapping class="com.forum.beans.Topic" />

  </session-factory>
</hibernate-configuration>

这是Hibernate3.0库和我的jstl jars:

enter image description here

3 个答案:

答案 0 :(得分:0)

您需要将slf4j-to-log4j桥接器添加到类路径中,其版本与slf4j api相同(此处为1.6.1)--- http://www.slf4j.org/dist/slf4j-1.6.1.zip

如果使用maven,请添加:

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

除了(可能已添加......)

         <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
         </dependency>

答案 1 :(得分:0)

根据您的库列表,您的slf4j-api来自hibernate-distribution,而slf4j-log4j12来自hibernate-annotations。由于slf4j报告了api和绑定之间的版本不匹配(slf4j-log4j12),我假设你正在混合不兼容的hibernate库。对于hibernate 3,有一个兼容性矩阵,可以告诉您哪些版本的不同包可以一起使用:https://community.jboss.org/wiki/HibernateCompatibilityMatrix

或者,您可以覆盖构建工具中的slf4j-api或slf4j-log4j12软件包的版本(假设您使用了一个),并确保它们都具有相同的版本。例如,如果你使用slf4j-api 1.6.1,你应该确保slf4j-log4j12 lib也是版本1.6.1。

答案 2 :(得分:0)

你可以从hibernate.org下载hibernate final包解压缩这个zip文件并将目录下的jar文件(hibernate / lib / required)导入你的eclipse ide。之后你可以从slf4j.org unzip下载slf4j.zip并添加名为slf4j-simple-1.7.6.jar的jar文件