Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing class

12,531

This error occurs when ever you have incompatible changes to the existing library of various versions of the same class exists in the classpath. Pls refer this answer for further details. Coming to your question, I see that you are using hibernate 3.5.x and also those jars with version 4.x and 3.3.x. Just for your reference this is the screenshot of my jars with respect to hibernate 4.x

antlr-2.7.7
dom4j-1.6.1
hibernate-commons-annotations-4.0.1.Final
hibernate-core-4.2.0.Final
hibernate-entitymanager-4.2.0.Final
hibernate-jpa-2.0-api-1.0.1.Final
hibernate-validator-4.3.1.Final
javassist-3.15.0-GA
jboss-logging-3.1.2.GA
jboss-logmanager-1.4.0.Final
jboss-transaction-api_1.1_spec-1.0.1.Final
log4j-jboss-logmanager-1.0.1.Final

For JPA to work I use the above jars. Also, please add the driver specific to your DB to the list. BTW, I always suggest you to use Some kind of dependency management tools like ivy, gradle or maven to manage your dependency rather you trying to manage it manually. This solves most of the problems.

Share:
12,531
Nitesh
Author by

Nitesh

Updated on June 04, 2022

Comments

  • Nitesh
    Nitesh almost 2 years

    I am trying simple application for persisting object into the DB using JPA-(Hibernate Provider). I am very new to this JPA. I searched a lot on net but not getting solution of my problem. I don't know which Jars are required for this app. Plz resolve this problem. I have been trying this simple app for last 2 days. But it's not working. plz help me. Thank you very much in advance.

    This is my code : Entity.java

    package com.jpa;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    
    @Entity
    @Table (name="student")
    public class EntityClass 
    {
        @Id
        private int id;
        private String fName;
        private String lName;
    
        public int getId() {
        return id;
        }
        public void setId(int id) {
        this.id = id;
        }
        public String getfName() {
        return fName;
        }
        public void setfName(String fName) {
        this.fName = fName;
        }
        public String getlName() {
        return lName;
        }
        public void setlName(String lName) {
        this.lName = lName;
        }
    
     }
    

    this is my MainClass:

    package com.jpa;
    import java.util.HashMap;  
    import java.util.Map;
    
    import javax.persistence.EntityManager; 
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.Persistence;
    

    public class MainClass {

    public static void main(String[] args) 
    {
        EntityClass e= new EntityClass();
        e.setfName("BNT");
        e.setlName("SOFT");
    
        EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("persistence");
        EntityManager eManager = emFactory.createEntityManager();
    
        eManager.getTransaction().begin();
        eManager.persist(e);
    
        eManager.getTransaction().commit();
        eManager.close();
    
    }
    
    }
    

    and this is my persistence.xml file:

    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">
    <persistence-unit name="persistence" transaction-type="RESOURCE_LOCAL">
    
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <!-- <class>com.geowarin.hibernate.jpa.standalone.model.User</class> -->
        <class>com.jpa.EntityClass</class>
    
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/bnt" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="bnt123" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
        <!--    <property name="hibernate.hbm2ddl.auto" value="create" />
            <property name="hibernate.hbm2ddl.import_files" value="sql/import-users.sql" /> -->
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="false" />
        </properties>
    
    </persistence-unit>
    

    Whenever I am trying to run MainClass.java it gives following errors:

    Exception in thread "main" 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 org.hibernate.ejb.Ejb3Configuration.<clinit>(Ejb3Configuration.java:107)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:124)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:78)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at com.jpa.MainClass.main(MainClass.java:29)
    

    ... I know something is wrong in adding required jars... I have added following jars:

    javax.persistence.jar
    mysql-connector-java-5.1.24-bin.jar
    hibernate-entitymanager.jar
    hibernate.3.3.2.jar
    hibernate-commons-annotations-4.0.1.Final.jar
    jta-1.1.jar
    antlr-2.7.6.jar
    dom4j-1.6.1.jar
    asm-3.1.jar
    hibernate-core-3.5.1-Final.jar
    hibernate-annotaions-3.5.1-Final.jar
    cglib-2.2.2.jar
    

    Is anything wrong in these Jars? Is it necessary to add more jars? Plz feel free to give any advice if I am doing wrong.