web-dev-qa-db-fra.com

java.lang.ClassNotFoundException: org.hibernate.HibernateException

J'exécute une application Web avec Hibernate et je suis resté bloqué à cette exception. Toute aide s'il vous plaît?

Java.lang.ClassNotFoundException: org.hibernate.HibernateException À org.Apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.Java:1714) À org.Apache.catalina.loader.WebappClassLoader .loadClass (WebappClassLoader.Java:1559) sur com.forum.dao.TopicDAO.findAll (TopicDAO.Java:43) sur com.forum.servlets.Accueil.doGet (Accueil.Java : 23) Sur javax.servlet.http.HttpServlet.service (HttpServlet.Java:621) Sur javax.servlet.http.HttpServlet.service (HttpServlet.Java:728) à org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.Java:305) à org.Apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.Java:210). à org.Apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.Java:222) à org.Apache.catalina.core.StandardContextValve.Java:222) à org.Apache.catalina.core.StandardContextValve.invoke (StandardContextValve.Java:123) à org.Apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.Java:472) à org.Apache.catalina.core.StandardHostValve.invoke (StandardHostValve.Java:171) à. .Apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.Java:99) À l'org.Apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.Java:953) À org.Apache .catalina.core.StandardEngineValve.invoke (StandardEngineValve.Java:118) à l'org.Apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.Java:408) à l'orgAApache.coyote .http11.AbstractHttp11Processor.process (AbstractHttp11Processor.Java:1008) à org.Apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.Java:589) à org.Apache.Tomcat. .net.JIoEndpoint $ SocketProcessor.run (JIoEndpoint.Java:312) à Java.util.concurrent.ThreadPoolExecutor.runWorker (Source inconnue) à J ava.util.concurrent.ThreadPoolExecutor $ Worker.run (source inconnue) à Java.lang.Thread.run (source inconnue)

Voici 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;
}

Et voici mon 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 );
}

Voici mes bibliothèques ajoutées d'Hibernate:

hibernate structure

7
Gentuzos

Explication:

  • Une exception ClassDefNotFound signifie que votre programme n'a pas été en mesure de Trouver un fichier .class requis à partir des bibliothèques référencées.

  • Dans votre cas, le fichier hibernateX.jar n'est pas packaged dans votre fichier war .

  • Ce que vous devez faire est de l’ajouter au dossier WEB-INF/lib de votre fichier war .

Solution (utilisant IntelliJ):

  1. ouvrir la structure du projet

  2. sélectionnez Artefacts dans les options de gauche

  3. depuis votre fichier war dans l'onglet OutputLayout, naviguez jusqu'à WEB-INF/lib

  4. ajouter la bibliothèque contenant hibernateX.jar dans le dossier

  5. redéployez votre projet.

Solution (utilisant Eclipse):

  1. Il suffit de glisser et déposer le pot à WEB-INF/lib
17
justADreamer

Je vois quelques bibliothèques manquantes. Je les ai et ça fonctionne très bien. Btw. quelle base de données utilisez-vous? PostgreSQL? Sinon, vous devez également inclure le pilote JDBC pour votre base de données. Veuillez noter que certains d'entre eux sont requis pour une utilisation en veille prolongée via JPA. 

enter image description here

1
wmac

[Pour les IDE Eclipse] J'ai rencontré des problèmes similaires. J'ai tout essayé: nettoyage, installation et mises à jour, changement d'espace de travail, nettoyage du chemin de classe ou version Java, mais cela ne peut être résolu que de la manière suivante. :

Cette exception peut également résulter de la création manuelle du serveur Tomcat sur lequel les dépendances requises ne sont pas déployées, même si les fichiers JAR requis sont en place dans le projet en cours. Pour ce faire, vous devez corriger la configuration du serveur et les projets référencés.

Propriétés des serveurs

Configuration des runnings

0
Raul Acu

essayez d’ajouter des fichiers jar dans webContent/WEB-INF/lib. Cela devrait fonctionner très probablement. Parfois, Hibernate est incapable de trouver les fichiers JAR requis. Donc, vous devez ajouter des fichiers JAR et fournir le chemin correct pour cela.

0
shubham grover

Parfois, cela peut provenir de bibliothèques en veille prolongée en conflit dans votre dépôt Maven local. J'avais ce problème et après avoir essayé tout ce qui était suggéré ici qui ne fonctionnait pas pour moi, j'ai dû supprimer tous les éléments du dossier Hibernate contenant plusieurs versions d'Hibernate dans mon dépôt local maven. Et après cela, tout a bien fonctionné pour moi

0
Keelean