2009-11-13 10 views
1

Je suis en train de configurer une application existante sur un nouveau serveur Tomcat 5.5 se connectant à une base de données Postgres (fonctionnant sur Debian Lenny). Quand j'y accède, j'obtiens une série de traces de pile avec la cause suivante:Exception JSP - classe non trouvée (tomcat)

java.lang.ClassNotFoundException: java.sql.SQLClientInfoException 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1363) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1209) 
    java.lang.Class.forName(libgcj.so.90) 
    java.lang.Class.initializeClass(libgcj.so.90) 
    java.lang.Class.initializeClass(libgcj.so.90) 
    org.postgresql.Driver.makeConnection(Driver.java:382) 
    org.postgresql.Driver.connect(Driver.java:260) 
    java.sql.DriverManager.getConnection(libgcj.so.90) 
    jof.DBConnection.getConnection(DBConnection.java:81) 
    jof.BeanInterfaceBase.db(BeanInterfaceBase.java:263) 
    jof.BeanInterfaceBase.getStatement(BeanInterfaceBase.java:613) 
    jof.HelpInterface.findByNaturalId(HelpInterface.java:81) 
    jof.HelpInterface.findByNaturalId(HelpInterface.java:128) 
    org.apache.jsp.index_jsp.getHelp(index_jsp.java:162) 
    org.apache.jsp.index_jsp._jspService(index_jsp.java:369) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 
    java.lang.reflect.Method.invoke(libgcj.so.90) 
    org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244) 
    java.security.AccessController.doPrivileged(libgcj.so.90) 
    javax.security.auth.Subject.doAsPrivileged(libgcj.so.90) 
    org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276) 
    org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162) 

Qu'est-ce qui manque?

Répondre

3
java.lang.ClassNotFoundException: java.sql.SQLClientInfoException 

Qu'est-ce qui manque?

Pour être précis: la classe mentionnée est manquante dans le chemin de classe d'exécution. Il doit figurer dans le classpath runtime sous la forme d'un fichier de classe autonome (*.class) ou dans un fichier JAR (*.jar). Vous pouvez également ajouter son chemin d'accès réel au classpath runtime.

Par défaut Webapp/WEB-INF/lib et Webapp/WEB-INF/classes les dossiers de la WebApp sont couverts par le classpath d'exécution, comme dossier de serveur d'applications Appserver/lib et JRE/lib de Java.

Tous les fichiers JAR de tiers Webapp spécifiques doivent être placés dans Webapp/WEB-INF/lib. Toutes les classes spécifiques à webapp (servlets, etc ..) doivent être placées dans Webapp/WEB-INF/classes. Tous les fichiers JAR spécifiques à un serveur d'applications (ou webapp-common) doivent être placés dans Appserver/lib. Le dossier JRE/lib de Java doit être non touché.

Espérons que cela aide.

Édition: le problème réel est pire: il s'agit en effet d'une classe Java 6 uniquement. Tomcat est apparemment exécuté sur un Java 5. Passez en revue votre variable d'environnement JAVA_HOME. Il doit au moins pointer vers le dossier d'installation racine de Java 6 JRE.

+0

Merci, c'était très utile. La commutation de l'exécution a en effet résolu le problème. – user83358

+0

De rien. – BalusC

2

Ceci est une supposition, mais je vois que java.sql.SQLClientInfoException est une classe qui a été introduite dans Java6. Quelle version de Java est utilisée pour lancer votre serveur Tomcat? Peut-être que vous développez sous Java6 mais que vous déployez sur un Tomcat exécutant Java5?

Questions connexes