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:
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):
ouvrir la structure du projet
sélectionnez Artefacts dans les options de gauche
depuis votre fichier war dans l'onglet OutputLayout, naviguez jusqu'à WEB-INF/lib
ajouter la bibliothèque contenant hibernateX.jar dans le dossier
redéployez votre projet.
Solution (utilisant Eclipse):
WEB-INF/lib
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.
[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.
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.
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