codeofnode
codeofnode

Reputation: 18629

SEVERE: Initial SessionFactory creation failed.java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V

I am using netbeans, and want to integrate struts and hibernate for a simple application to display all the data of a table on a jsp page.

But i am getting the following error

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.reflect.InvocationTargetException

At the logs of glassfish server i get following error

    SEVERE: Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not found
SEVERE: Initial SessionFactory creation failed.java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V

HibernateUtil.java:

package controller;

import org.hibernate.cfg.Configuration;
import org.hibernate.SessionFactory;

/**
 * Hibernate Utility class with a convenient method to get Session Factory
 * object.
 *
 * @author ROMO
 */
public class HibernateUtil {

    private static final SessionFactory sessionFactory;

    static {
        try {
            // Create the SessionFactory from standard (hibernate.cfg.xml) 
            // config file.
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Log the exception. 
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

FindQuestion.java:

package controller;

import beans.Question;
import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;

/*
 * @author ROMO
 */
public class FindQuestion extends ActionSupport {

    private String q = null;
    private String categoryname = null;
    private List questionList = new ArrayList();

    @Override
    public String execute() throws Exception {
        q = "Question";
        categoryname = "Category";
        try {
            Session session = HibernateUtil.getSessionFactory().getCurrentSession();
            session.beginTransaction();
            this.questionList = (List<Question>) session.createQuery("from Question").list();
            session.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return SUCCESS;
    }

}

Can someone please Help me out.

Upvotes: 1

Views: 9716

Answers (3)

Adnan Bal
Adnan Bal

Reputation: 213

Simply add to your pom.xml :

<dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib-asm</artifactId>
        <version>1.0</version>
</dependency>

Upvotes: 1

theINtoy
theINtoy

Reputation: 3698

I found this:

http://www.hildeberto.com/2008/05/hibernate-and-jersey-conflict-on.html

Essentially, just in case the full explanation above goes: I Fixed classloading issues with asm by using the cglib-nodep-2.2.3.jar. The reason why this needs replacing is that ASM is a popular library. Hibernate is built against asm 1.5.3 but asm is now at version 4. Somewhere, the class loaders in my container are picking up a much more recent version of asm and the class ClassWriter has been changed. Hibernate uses cglib under the covers, which in turn uses asm 1.5.3. This is the issue. cglib-nodep was built to fix this issue. The asm classes have been moved from their standard package to a cglib package and it is these cglib versions that are used by the nodep library.

Spring adopts a very similar approach.

Upvotes: 1

Mikko Maunu
Mikko Maunu

Reputation: 42114

You have asm version that is incompatible with your Hibernate version. One way to check for compatible versions is to take a look to the maven dependencies, here for example for hibernate-core. It is usable way even if you do not maven builds.

One working combination for example is:

  • Hibernate 3.6.10,
  • cglib 2.2
  • asm 3.1.

If you need answer that is more suited for you, you have to share information about which libraries are included at the moment.

Upvotes: 3

Related Questions