Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Java > Développement Web en Java > Tomcat

Réponse
 
Outils de la discussion
Vieux 22/08/2008, 11h34   #1 (permalink)
Nouveau membre du Club
 
Date d'inscription: juin 2003
Messages: 63
Par défaut Pb Tomcat / Hibernate

Hello, j'ai un soucis avec Tomcat et Hibernate sous Eclipse

Depuis une JSP j'invoque une servlet qui fait appel à un objet mappé avec Hibernate.

Le code Java/Hibernate fonctionne parfaitement en tant que "J2EE application" sans passer par Tomcat (exécution depuis le main de la classe)

Tomcat fonctionne aussi lorsque ma servlet fait appel à des objets non persistents.

Mais dès que j'invoque un objet mappé j'ai l'erreur suivante :

Code :
Etat HTTP 500 - 
 
--------------------------------------------------------------------------------
 
type Rapport d'exception
 
message 
 
description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
 
exception 
 
javax.servlet.ServletException: "Servlet.init()" pour la servlet LoginServlet a généré une exception
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	java.lang.Thread.run(Unknown Source)
 
 
cause mère 
 
java.lang.NoClassDefFoundError: org/hibernate/HibernateException
	fr.sogeti.rh.servlet.LoginServlet.init(LoginServlet.java:28)
	javax.servlet.GenericServlet.init(GenericServlet.java:212)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	java.lang.Thread.run(Unknown Source)
 
 
cause mère 
 
java.lang.ClassNotFoundException: org.hibernate.HibernateException
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1360)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206)
	java.lang.ClassLoader.loadClassInternal(Unknown Source)
	fr.sogeti.rh.servlet.LoginServlet.init(LoginServlet.java:28)
	javax.servlet.GenericServlet.init(GenericServlet.java:212)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	java.lang.Thread.run(Unknown Source)
 
Idem si je lance une appli Hibernate qui marchait nickel en formation... J'ai dû zappr une config quelque part, au niveau d'Eclipse ou de Tomcat, mais où ?

Auriez-vous une idée ou une piste ? Merci !
Colargole est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/08/2008, 11h41   #2 (permalink)
Nouveau membre du Club
 
Date d'inscription: juin 2008
Messages: 76
Par défaut

tes explications sont trop vagues, plus de détails seraient les bienvenus...
solarien est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/08/2008, 11h56   #3 (permalink)
Nouveau membre du Club
 
Date d'inscription: juin 2003
Messages: 63
Par défaut

C'est que je ne peux pas mettre tout le code de l'appli...

La ligne de plantage est la suivante (servlet)

Code :
	public void init() throws ServletException {
		super.init();
		System.out.println("Initialisation des besoins");
		getServletContext().setAttribute("listeBesoins", new ListeBesoins());	
		//getServletContext().setAttribute("test", new Test());	
Ca marche avec la classe Test (une classe tout bête, voir ligne en commentaire) mais pas ListeBesoins qui est une array d'objets Besoin persistants.

La classe ListeBesoins n'est pas persistante, et d'ailleurs si je la définis comme étant une array d'objets Test non persistants ça ne plante pas...
Colargole est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/08/2008, 12h15   #4 (permalink)
Membre éclairé
 
Avatar de supermanu
 
Date d'inscription: janvier 2004
Messages: 320
Par défaut

En regardant l'erreur :

Citation:
java.lang.NoClassDefFoundError: org/hibernate/HibernateException
tu peux voir qu'il te manque une classe et donc une librairie.

Dans ton projet , dans le dossier WEB-INF/lib, tu dois avoir la librairie hibernate.jar, vérifie
__________________
Pensez au tag
Mon blog Tutoriels et Astuces en Java : http://emmanuelpierre.free.fr/blog/index.php?
supermanu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 25/08/2008, 10h10   #5 (permalink)
Nouveau membre du Club
 
Date d'inscription: juin 2003
Messages: 63
Par défaut

Hello,

Merci pour tes conseils avisés, ça marche
J'avais bien galéré et enfin c'est débloqué !

Mais explique-moi stp, les librairies on les met dans Libraries via le Java Build Path, alors pourquoi les mettre aussi "en dur" dans Web-Inf\lib ?

Je ne comprends pas bien la différence...
Colargole est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 25/08/2008, 10h37   #6 (permalink)
Membre éclairé
 
Avatar de supermanu
 
Date d'inscription: janvier 2004
Messages: 320
Par défaut

Le Java Build Path sert pour Eclipse (compilation, exécution des tests...). Et c'est pourquoi ton appli marchait dans Eclipse. Mais ce n'est pas le classpath pour Tomcat.

Ce qu'il faut faire :
- mettre les librairies dont tu as besoins dans WEB-INF/lib
- Dans Eclipse, aller dans JavaBuilPath/Librairies, cliquer sur Add Jars..., et sélectionner les .jar qui sont dans "nom_du_projet/WEB-INF/lib"

Quand tu déploie ton application dans Tomcat, toutes les librairies qui sont dans le dossier WEB-INF/lib vont être automatiquement ajoutées au Classpath... Et ton application fonctionnera
__________________
Pensez au tag
Mon blog Tutoriels et Astuces en Java : http://emmanuelpierre.free.fr/blog/index.php?
supermanu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 09h50   #7 (permalink)
Nouveau membre du Club
 
Date d'inscription: juin 2003
Messages: 63
Par défaut

OK merci, là pour sûr ça fonctionne bien, du coup tout s'enchaine de la jsp jusqu'a Hibernate en passant par la servlet et feuille xsl, un vrai bonheur
Colargole est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Java > Développement Web en Java > Tomcat

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide