2016-09-27 55 views
0

嗨,我收到以下异常初始SessionFactory的创建failed.java.lang.IncompatibleClassChangeError的ExceptionInInitializerError

"Initial SessionFactory creation failed.java.lang.IncompatibleClassChangeError: Implementing class Exception in thread "main" java.lang.ExceptionInInitializerError"

可以请你帮我在这

//Initial SessionFactory creation failed.java.lang.IncompatibleClassChangeError: Implementing class 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at com.ihub.Hidernate_annotations.persistance.HibernateUtil.buildSessionFactory(HibernateUtil.java:19) 
    at com.ihub.Hidernate_annotations.persistance.HibernateUtil.<clinit>(HibernateUtil.java:8) 
    at com.ihub.Hidernate_annotations.App.main(App.java:17) 
Caused by: java.lang.IncompatibleClassChangeError: Implementing class 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.access$100(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at com.ihub.Hidernate_annotations.persistance.HibernateUtil.buildSessionFactory(HibernateUtil.java:13) 
    ... 2 more 

下面是我的代码:

Student.java

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import static javax.persistence.GenerationType.IDENTITY; 
import javax.persistence.Id; 
import javax.persistence.Table; 
import javax.persistence.UniqueConstraint;  

@Entity 
@Table(name = "Test", catalog = "Demo", uniqueConstraints = { 
     @UniqueConstraint(columnNames = "ID") 
     }) 
public class Student implements java.io.Serializable {  

    private static final long serialVersionUID = 1L; 
    private Integer stuId; 
    private String stuName; 
    private String stuDepartment; 
    private String stuAddress; 

    public Student() { 
    } 

    public Student(Integer stuId, String stuName,String stuDepartment, String stuAddress) { 
     this.stuId=stuId; 
     this.stuName = stuName; 
     this.stuDepartment=stuDepartment; 
     this.stuAddress=stuAddress; 
    } 

    @Id 
    @GeneratedValue(strategy = IDENTITY) 
    @Column(name = "ID", unique = true, nullable = false) 

    public Integer getStuId() { 
     return stuId; 
    } 

    public void setStuId(Integer stuId) { 
     this.stuId = stuId; 
    } 

    @Column(name = "Name", unique = false, nullable = false, length = 50) 
    public String getStuName() { 
     return stuName; 
    } 

    public void setStuName(String stuName) { 
     this.stuName = stuName; 
    } 

    @Column(name = "Department", unique = false, nullable = false, length = 25) 
    public String getStuDepartment() { 
     return stuDepartment; 
    } 

    public void setStuDepartment(String stuDepartment) { 
     this.stuDepartment = stuDepartment; 
    } 

    @Column(name = "Address", unique = false, nullable = false, length = 200) 
    public String getStuAddress() { 
     return stuAddress; 
    } 

    public void setStuAddress(String stuAddress) { 
     this.stuAddress = stuAddress; 
    }  
} 

App.java

package com.ihub.Hidernate_annotations; 

import org.hibernate.Session;  
import com.ihub.Hidernate_annotations.persistance.HibernateUtil; 

/** 
* Hello world! 
* 
*/ 
public class App 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("Maven + Hibernate + MySQL"); 
     Session session = HibernateUtil.getSessionFactory().openSession(); 

     session.beginTransaction(); 
     Student stu = new Student();  

     stu.setStuId(2); 
     stu.setStuName("Raghaav"); 
     stu.setStuDepartment("CSE"); 
     stu.setStuAddress("GUNTUR"); 

     session.save(stu); 
     session.getTransaction().commit(); 
    } 
} 

HibernateUtil.java

package com.ihub.Hidernate_annotations.persistance; 

import org.hibernate.SessionFactory; 
import org.hibernate.cfg.AnnotationConfiguration; 

public class HibernateUtil { 

    private static final SessionFactory sessionFactory = buildSessionFactory(); 

    private static SessionFactory buildSessionFactory() { 
     try { 
      // Create the SessionFactory from hibernate.cfg.xml 
      return new AnnotationConfiguration().configure().buildSessionFactory(); 

     } 
     catch (Throwable ex) { 
      // Make sure you log the exception, as it might be swallowed 
      System.err.println("Initial SessionFactory creation failed." + ex); 
      throw new ExceptionInInitializerError(ex); 
     } 
    } 

    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 

    public static void shutdown() { 
     // Close caches and connection pools 
     getSessionFactory().close(); 
    }  
} 

的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="hibernate.bytecode.use_reflection_optimizer">false</property> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.password">root</property> 
     <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/demo</property> 
     <property name="hibernate.connection.username">root</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
     <property name="show_sql">true</property> 
     <mapping class="com.ihub.Hidernate_annotations.Student"></mapping> 
    </session-factory> 
</hibernate-configuration>  

以下是依赖

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency>  

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-annotations</artifactId> 
     <version>3.5.6-Final</version> 
    </dependency> 

    <!-- MySQL database driver --> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.9</version> 
    </dependency> 

    <!-- Hibernate core --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate</artifactId> 
     <version>3.2.3.ga</version> 
</dependency> 

<!-- Hibernate library dependecy start --> 
    <dependency> 
     <groupId>dom4j</groupId> 
     <artifactId>dom4j</artifactId> 
     <version>1.6.1</version> 
    </dependency> 

    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.1.1</version> 
    </dependency> 

    <dependency> 
     <groupId>commons-collections</groupId> 
     <artifactId>commons-collections</artifactId> 
     <version>3.2.1</version> 
    </dependency> 

    <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib</artifactId> 
     <version>2.2</version> 
    </dependency> 
<!-- Hibernate library dependecy end --> 

    <dependency> 
     <groupId>javax.transaction</groupId> 
     <artifactId>jta</artifactId> 
     <version>1.1</version> 
    </dependency> 

    <dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>3.3.1.GA</version> 
</dependency>  
    </dependencies> 

请帮我

+0

请添加完整的堆栈跟踪。 – Jens

回答

0

的AnnotationConfigiuration已被弃用,使用配置,而不是

  return new Configuration().configure().buildSessionFactory(); 
+0

不工作给出了以下异常“的AnnotationConfiguration实例是需要使用<映射类=” com.ihub.Hibernate_annotations.Student“/>” – raghava

+0

什么是你的学生类的包,我看你正在使用的包是Hidernate_annotations不是Hibernate_annotations –

+0

对不起,那是拼写错误的名字是Hidernate_annotations – raghava

0

我认为错误,因为你必须在Maven的POM不同休眠版本.XML。只留下一个hibernate版本(最好是最新版本)并重新构建。还要确保所有的hibernate依赖是相同的版本(休眠,休眠核心等)

相关问题