2010-08-24 3 views
0

Je tente de démarrer avec un projet Spring 2 + Struts 2 + Hibernate 3 arquitecture, mais je reçois une exception lors du déploiement dans Apache Tomcat 6.0 dans Eclipse (version Helios) .Problèmes de déploiement de l'application Spring 2 dans Apache Tomcat 6

exception de Tomcat au démarrage:

GRAVE: Error configurando escuchador de aplicación de clase org.springframework.web.context.ContextLoaderListener 
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
24-ago-2010 12:22:04 org.apache.catalina.core.StandardContext listenerStart 
GRAVE: Se ha saltado la instalación de escuchadores de aplicación debido a error(es) previo(s) 
24-ago-2010 12:22:04 org.apache.catalina.core.StandardContext start 
GRAVE: Error listenerStart 
24-ago-2010 12:22:04 org.apache.catalina.core.StandardContext start 
GRAVE: Falló en arranque del Contexto [/web] debido a errores previos 

web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="struts_blank" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <display-name>Struts Blank</display-name> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:spring.xml</param-value> 
    </context-param> 

    <filter> 
     <filter-name>struts2</filter-name> 
     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 
</web-app> 

Je googlé depuis longtemps, et j'ai essayé quelques solutions possibles que je trouve, mais ils n'ont pas travaillé . Je vais vous expliquer ce que j'ai essayé et l'exception obtenu:

Première façon: Dans la configuration du serveur Tomcat, onglet classpath, j'ai ajouté le printemps-web-2.5.1.jar (juste le même que celui utilisé dans le projet) en tant que jar externe dans la section Entrées Bootstrap. Puis, quand Apache déclenche cette exception lors du démarrage

GRAVE: Error configurando escuchador de aplicación de clase org.springframework.web.context.ContextLoaderListener 
java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener 
    at java.lang.ClassLoader.findBootstrapClass(Native Method) 
    at java.lang.ClassLoader.findBootstrapClass0(ClassLoader.java:900) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:316) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:314) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1560) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
24-ago-2010 12:42:36 org.apache.catalina.core.StandardContext listenerStart 
GRAVE: Se ha saltado la instalación de escuchadores de aplicación debido a error(es) previo(s) 
24-ago-2010 12:42:36 org.apache.catalina.core.StandardContext start 
GRAVE: Error listenerStart 
24-ago-2010 12:42:36 org.apache.catalina.core.StandardContext start 
GRAVE: Falló en arranque del Contexto [/web] debido a errores previos 

J'ajouté, au même endroit et ainsi, servlet-api-2.4.jar. Puis-je obtenir l'exception suivante:

INFO: Starting Servlet Engine: Apache Tomcat/6.0.29 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Ljava/lang/String; 
    at org.apache.catalina.core.StandardHost$MemoryLeakTrackingListener.lifecycleEvent(StandardHost.java:561) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4625) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
    ... 6 more 

Deuxième moyen: Dans l'onglet classpath ajouter mon projet et je reçois la même exception posté plus tôt (java.lang.reflect.InvocationTargetException). Pourquoi Apache Tomcat ne lit-il pas correctement les bibliothèques du projet? Peut-être que je néglige quelque chose, ou quelque chose ne va pas du tout. Pourriez-vous m'aider s'il vous plaît pour le résoudre? Je donnerai toutes les informations dont vous avez besoin pour cela.

Toute aide sera la bienvenue.

Répondre

1

Un problème est survenu lors du déploiement de fichiers jar d'Eclipse vers Tomcat. Je suis sûr qu'il y a une meilleure façon de le résoudre, alors que je l'ai trouvé je l'ai résolu en générant le fichier war et en le déployant sur une installation autonome d'Apache Tomcat.

0

org.springframework.web.context.ContextLoaderListener vérifier en mettant dans l'importation de Classs ... sinon disponible que d'ajouter jar appropriée ..

+1

Vous avez raison, mais quand je l'inclue sur classpath, je reçois une autre exception comme je l'ai dit dans le message. Merci pour votre réponse – CraicFinder

0

Vous ne pouvez pas simplement ajouter spring-web-2.5.1.jar lui-même, vous avez besoin d'un tas d'autres JAR de printemps pour aller avec elle, par exemple spring-core, spring-beans, spring-context, spring-context-support, et peut-être spring-webmvc. Mieux encore, jouez en toute sécurité et utilisez le tout-en-un spring.jar.

Oh, et Spring 2.5.1 est ancienne. Au moins mise à niveau à 2.5.6, ou de préférence 3.0.x.

+0

Je ne fais qu'inclure toutes les librairies comme expliqué en deuxième, mais ça ne marche toujours pas. Merci pour votre réponse – CraicFinder

1

Vous ne pouvez pas inclure le fichier servlet-api dans une application Web Tomcat. essayez de l'enlever.

1

En ce qui concerne la question fondamentale de

Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Ljava/lang/String; 

C'est certainement causer en ayant une version antérieure de servlet-api.jar quelque part sur votre chemin de classe. J'ai eu exactement le même problème; mon a été causé par commons-logging.

Pour résoudre ce problème que je devais faire ce qui suit à mon pom.xml

<dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging</artifactId> 
    <version>1.1</version> 
    <exclusions> 
    <exclusion> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
    </exclusion> 
    </exclusions>  
</dependency> 
0

J'ai aussi rencontré ce problème. Essayez d'utiliser %TOMCAT_HOME%/lib/servlet-api.jar au lieu d'autres fichiers jar (contenant le package javax.servlet, par exemple javaee.jar) recompilez votre projet. Peut-être que cela peut résoudre votre problème.

Questions connexes