我正在编写一个我需要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:
答案 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文件