Tomcat启动时自动重启Web应用程序,出错后
问题描述:
我在tomcat上遇到了很大麻烦。Tomcat启动时自动重启Web应用程序,出错后
explaine之前,让我分不清是我第一次看到这样的事情......
我建基于Hibernate,春季3.0和新泽西州的REST框架使用JPA的应用程序。
如果使用的是GlassFish,一切工作正常,但deployng Tomcat上相同的应用程序,我注册了以下错误代码:
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
则tomcat会重新启动应用程序,并再次,相同的错误。在无限循环中。
就像一个图书馆冲突,但我真的没有对如何解决这个问题的任何想法...
任何建议表示赞赏!
Ciao,Davide。
答
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.
如果是前者,下载0并把它添加到Tomcat。
如果是后者,请将它及其所有依赖项放在您的WEB-INF/lib,Tomcat 5.x的server/lib或Tomcat 6.x的lib中。 (只有一个,不是全部。)
它与Glassfish一起使用,因为它们已经为您捆绑了它。 Tomcat没有。
答
它看起来像jersey.jar和/或jsr311-api.jar从您的webapp中丢失。您可能会检查它们是否位于WEB-INF/lib文件夹中。
答
从/WEB_INF/lib
文件夹中删除所有Jersey JAR文件,刷新项目并再次将Jersey库的所有JAR文件粘贴到/WEB_INF/lib
。刷新项目,再次停止服务器,部署并运行。
嗨,非常感谢您的回复! 你会的!我在我的pom中发现了一个范围限制,我真的不记得这个限制,事实上,它在运行时排除了jersey-server jar。
非常感谢, Davide – Davide 2010-06-04 00:11:17