2013-08-12 12 views
7

Używam aplikacji sieci Web ze stanem hibernacji i utknąłem w tym wyjątku. Proszę o pomoc?java.lang.ClassNotFoundException: org.hibernate.HibernateException

java.lang.ClassNotFoundException: org.hibernate.HibernateException w org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1714) w org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1559) na com.forum.dao.TopicDAO.findAll (TopicDAO.java:43) na com.forum.servlets.Accueil.doGet (Accueil.java:23) na javax.servlet.http .HttpServlet.service (HttpServlet.java:621) w javax.servlet.http.HttpServlet.service (HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:222) na org.apache.catalina.core. StandardContextValve.invoke (StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:99) na org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:953) na org.apache.catalina.core. StandardEngineValve.invoke (StandardEngineValve.java:118) at org.apache.catalina .connector.CoyoteAdapter.service (CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1008) at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java : 589) na org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run (JIoEndpoint.java:312) w java.util.concurrent.ThreadPoolExecutor.runWorker (Unknown Source) w java.util.concurrent. ThreadPoolExecutor $ Worker.run (Unknown Source) na java.lang.Thread.run (Unknown Source)

Oto TopicDAO.findALL()

public static List<Topic> findAll() { 

    Session s = HibernateUtils.getSession(); //TopicDAO.java:43 
    Transaction tx = s.beginTransaction(); 
    List<Topic> objects = null; 

    Query q = s.createQuery("from Topic"); 
    objects = q.list(); 
    tx.commit(); 

    return objects; 
} 

I tu jest moje servlet.doGet()

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    HttpSession session = request.getSession(); 

    TopicDAO td = new TopicDAO(); 
    List<Topic> listTopics = td.findAll(); 

    session.setAttribute(ATT_LIST_TOPICS, listTopics); 

    this.getServletContext().getRequestDispatcher(ACCUEIL).forward(request, response); 
} 

Oto moje Dodane bibliotek Hibernacja:

hibernate structure

+0

Musisz upewnić się, że masz wszystkie zależności (zewnętrzne słoiki) i są one w ścieżce klas. Jeśli nie wiesz, jak skonfigurować Hibernate, przeczytaj: http://docs.jboss.org/hibernate/orm/4.2/quickstart/en-US/html/ch01.html – hovanessyan

Odpowiedz

17

Objaśnienie:

  • ClassDefNotFound wyjątek oznacza, że ​​program nie był w stanie znaleźć wymagane.plik klasy z przywoływanych bibliotek.

  • W twoim przypadku plik hibernateX.jar nie jest zapakowany w twoim pliku wojennym .

  • Należy dodać go do folderu WEB-INF/lib pliku wojennego .

Solution (przy użyciu IntelliJ):

  1. otworzyć strukturę projektu

  2. wybierz Artefakty od lewej opcji bocznych

  3. z pliku wojennej w OutputLayout przeglądaj zakładkę pod numerem WEB-INF/lib

  4. dodać bibliotekę zawierającą hibernateX.jar do folderu

  5. przesunięcie projektu.

Solution (przy użyciu Eclipse):

  1. Po prostu przeciągnij i upuść słoik do WEB-INF/lib
+1

Mam dokładnie ten sam problem zmarnowany przez cały dzień . ale ten post rozwiązał mój problem w ciągu 5 minut. Żałuję, że nie przeszukano tak dobrze. – KNU

+0

Proszę, sprawdź tę odpowiedź http://stackoverflow.com/a/6083776/828551 Rozwiązał mój problem i jest taki sam !! – russellhoff

+1

zmarnowałem cały dzień po tym i wreszcie mnie uratowałeś. Bardzo dziękuję i życzę Wam wiele najlepszych życzeń. – SAM

1

widzę kilka z biblioteki brakujący. Mam je i działa dobrze. Btw. jakiej bazy danych używasz? PostgreSQL? W przeciwnym razie musisz również dołączyć sterownik JDBC do swojej bazy danych. Należy pamiętać, że niektóre z nich są wymagane do hibernacji za pośrednictwem JPA.

enter image description here

0

Czasami może to być na skutek sprzecznych bibliotek Hibernacja w lokalnym Maven repo. Miałem ten problem i po wypróbowaniu wszystkiego, co tutaj sugerowałem, które nie działało dla mnie, musiałem uciekać się do usuwania wszystkiego w folderze hibernacji, który zawiera wiele wersji hibernacji w moim lokalnym repo. A potem wszystko zaczęło działać dobrze dla mnie

0

spróbuj dodać pliki jar w webContent/WEB-INF/lib. To powinno działać najprawdopodobniej. Czasami hibernacja nie może znaleźć wymaganych plików jar. Musisz więc dodać pliki jar i podać właściwą ścieżkę.

Powiązane problemy