2010-06-03 243 views
2

我在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。

回答

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. 

如果是前者,下載0​​並把它添加到Tomcat。

如果是後者,請將它及其所有依賴項放在您的WEB-INF/lib,Tomcat 5.x的server/lib或Tomcat 6.x的lib中。 (只有一個,不是全部。)

它與Glassfish一起使用,因爲它們已經爲您捆綁了它。 Tomcat沒有。

+0

嗨,非常感謝您的回覆! 你會的!我在我的pom中發現了一個範圍限制,我真的不記得這個限制,事實上,它在運行時排除了jersey-server jar。

  com.sun.jersey jersey-server ${jersey.version} provided  
非常感謝, Davide – Davide 2010-06-04 00:11:17

1

它看起來像jersey.jar和/或jsr311-api.jar從您的webapp中丟失。您可能會檢查它們是否位於WEB-INF/lib文件夾中。

2

/WEB_INF/lib文件夾中刪除所有Jersey JAR文件,刷新項目並再次將Jersey庫的所有JAR文件粘貼到/WEB_INF/lib。刷新項目,再次停止服務器,部署並運行。

相關問題