2010-06-03 4 views
2

J'ai un gros problème sur tomcat.Tomcat Redémarrer automatiquement l'application Web au démarrage, après l'erreur

Avant explaine, permettez-moi de dire est la première fois que je vois quelque chose comme ça ...

Je construis une application utilisant JPA sur Hibernate, Spring 3.0 et Jersey REST cadre.

Lorsque vous utilisez GlassFish, tout fonctionne bien, mais deployng la même application sur tomcat, je le code enregistré erreur suivant:

GRAVE: Error deploying configuration descriptor java-zero.xml 
java.lang.NoClassDefFoundError: com/sun/jersey/spi/container/servlet/ServletContainer 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:616) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
     at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2527) 
     at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1010) 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1483) 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) 
     at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1095) 
     at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993) 
     at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4187) 
     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4496) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546) 
     at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637) 
     at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563) 
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498) 
     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277) 
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
     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:443) 
     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:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516) 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) 
     ... 34 more 

redémarre tomcat l'application et à nouveau, la même erreur. Dans une boucle infinie.

On dirait un conflit bibliothèque, mais je n'ai pas vraiment des idées sur la façon de le résoudre ...

Toute suggestion est appréciée!

Ciao, Davide.

Répondre

4
java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer suggests that you either don't have the Jersey JAR file or you've put it in the wrong place. 

Si c'est le premier, téléchargez-le here et l'ajouter à Tomcat. Si c'est le dernier, mettez-le et toutes ses dépendances dans votre WEB-INF/lib, serveur/lib pour Tomcat 5.x ou lib pour Tomcat 6.x. (Un seul, pas tout.)

Cela fonctionne avec Glassfish, car ils l'ont regroupé pour vous. Tomcat n'a pas.

+0

Salut, merci beaucoup pour votre réponse! Vous aurez raison! J'ai trouvé un scope clausal dans mon pom, je ne me souviens vraiment pas d'avoir mis dedans, qu'en fait, jar jersey-server exclut à l'exécution.

  com.sun.jersey jersey-server ${jersey.version} provided  
Merci beaucoup, Davide – Davide

1

Il semble que jersey.jar et/ou jsr311-api.jar sont manquants dans votre webapp. Vous pouvez vérifier qu'ils sont dans le dossier WEB-INF/lib.

2

Supprimez tous les dossiers Jersey JAR de /WEB_INF/lib, actualisez le projet et collez à nouveau toutes les bibliothèques JAR de Jersey dans /WEB_INF/lib. Actualisez le projet, arrêtez le serveur, déployez-le et lancez-le.

Questions connexes