java.lang.NoClassDefFoundError: не удалось инициализировать класс DataLayer.HibernateAdapter

Я изменил свой проект Java (веб-сервис) в динамический веб-модуль. Я использую Tomcat 7.0.59 в качестве сервера. При запуске сервер запускается без проблем. Но однажды, если я попытаюсь получить доступ к методу веб-службы, я получу сообщение об ошибке: "Не удалось инициализировать класс DataLayer.HibernateAdapter java.lang.NoClassDefFoundError: Не удалось инициализировать класс DataLayer.HibernateAdapter ". Кто-нибудь, пожалуйста, помогите мне, чем просто пометить его как «Дубликат». Если код необходимо изменить, пожалуйста, предоставьте мне подробные шаги. Спасибо!!

Журнал консоли:

Mar 10, 2015 2:09:07 PM com.sun.xml.ws.server.sei.EndpointMethodHandler invoke
SEVERE: Could not initialize class DataLayer.HibernateAdapter
java.lang.NoClassDefFoundError: Could not initialize class DataLayer.HibernateAdapter
    at DataLayer.DatabaseContext.<init>(DatabaseContext.java:12)
    at DataLayer.ConsumerDetails.getConsumerdetails(ConsumerDetail.java:84)
    at ManageLayer.Authenticate(AuthenticationManager.java:50)
    at ManageLayer.Console.GetProductsList(Console.java:484)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:246)
    at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)

DatabaseContext.java:

public class DatabaseContext
{
    private final Session session;

    public DatabaseContext() {
        this.session = HibernateAdapter.getSessionFactory().openSession();
    }

    public Session delegate() {
        return session;
    }

    public void close() {
        session.flush();
        session.close();
    }
}

class HibernateAdapter
   {
    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try 
        {

            return new AnnotationConfiguration()
            .addAnnotatedClass(Consumer.class)
            .addAnnotatedClass(Product.class)
            .addAnnotatedClass(PriceTag.class)
            .addAnnotatedClass(Barcode.class)
            .configure().buildSessionFactory();
        } 
        catch (Throwable e) 
        {
            System.err.println("Exception while creating Initial SessionFactory" + e);
            throw new ExceptionInInitializerError(e);
        }
    }

    public static SessionFactory getSessionFactory() 
    {
        return sessionFactory;
    }

    public static void shutdown() {
        getSessionFactory().close();
    }
}

person Nani    schedule 10.03.2015    source источник
comment
Вы проверили, находится ли DataLayer.HibernateAdapter в банке, о которой вы говорите?   -  person R9J    schedule 10.03.2015


Ответы (1)


NoClassDefFoundError обычно указывает, что ваш путь к классу неверен. Проверьте, есть ли у вас правильные библиотеки Hibernate в вашем пути к классам. например в настройках проекта, если вы используете Eclipse. Прямо сейчас вы неправильно включаете класс DataLayer.HibernateAdapter, поэтому Tomcat не может его найти.

person user1438038    schedule 10.03.2015