2015-03-10 4 views
0

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

Console Log:

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(); 
    } 
} 
+0

Вы проверили, находится ли 'DataLayer.HibernateAdapter' в банке, с которой вы ссылаетесь? – R9J

ответ

1

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

Смежные вопросы