1

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

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

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

这是我的 HibernateUtils.class

包 com.forum.utils;

导入 org.hibernate.HibernateException;导入 org.hibernate.Session;导入 org.hibernate.SessionFactory;导入 org.hibernate.cfg.AnnotationConfiguration;

公共类 HibernateUtils { 私有静态最终 SessionFactory sessionFactory;

// Crée une unique instance de la SessionFactory à partir de // hibernate.cfg.xml static { try { sessionFactory = new AnnotationConfiguration().configure() .buildSessionFactory(); } catch (HibernateException ex) { throw new RuntimeException("Problème de configuration :" + ex.getMessage(), ex); } }

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

此错误从该行触发:

s = HibernateUtils.getSession();

休眠.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 :

在此处输入图像描述

4

3 回答 3

1

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

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

于 2013-08-14T18:23:24.680 回答
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>
于 2013-08-14T18:19:12.783 回答
0

您可以从 hibernate.org 下载 hibernate 最终包解压缩此 zip 文件并将目录 (hibernate/lib/required) 下的 jar 文件导入到您的 eclipse ide。之后,您可以从 slf4j.org 下载 slf4j.zip 解压缩并添加名为 slf4j-simple-1.7.6.jar 的 jar 文件

于 2014-02-23T10:05:49.030 回答