Tomcat 6无法从WEB加载罐子
我试图在我的tomcat环境中追踪配置问题。 我们的生产服务器正在运行一个tomcat安装,并从共享的NFS挂载中读取这个war。
但是,当我尝试与独立框(与他们的配置)相同的战争时,我得到下面发布的错误。
有趣的是,如果我将WEB-INF / lib中的所有jar解压到WEB-INF / classes中,这个错误就会消失。
所以,似乎有些东西阻止应用程序加载WEB-INF / lib路径,但是我不能在我的生活中找到任何会导致此问题的tomcat设置,因为它正在检测应用程序和配置,而不是包括的罐子。
有任何想法吗?
SEVERE:配置类org.springframework.web.context.ContextLoaderListener的应用程序侦听器时出错java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387 ),位于org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3786)org.apache.catalina.core.StandardContext处的org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)。启动(StandardContext.java:4342)在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)位于org.apache .catalina.core.StandardHost.addChild(StandardHost.java:525)at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627)at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java :553)at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488) 在org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent (LifecycleSupport.java:117)在org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)位于org.apache.catalina.core.StandardHost.start(StandardHost.java:719)的org.apache。 catalina.core.ContainerBase.start(ContainerBase.java:1045)位于org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)at org.apache.catalina.core.StandardService.start(StandardService.java: 516)at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)at org.apache.catalina.startup.Catalina.start(Catalina.java:578)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native方法)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Me thod.invoke(Method.java:597)at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)Dec 20 ,2011 4:20:38 PM org.apache.catalina.core.StandardContext listenerStart SEVERE:配置类org.springframework.security.web.session.HttpSessionEventPublisher的应用程序侦听器出错java.lang.ClassNotFoundException:org.springframework.security.web .session.HttpSessionEventPublisher在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)at org.apache.catalina.core .StandardContext.listenerStart(StandardContext.java:3786)at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)at org.apache.catalina.core.StandardHost中的org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)。 在org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627)上的org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)上的addChild(StandardHost.java:525) .catalina.startup.HostConfig.deployApps(HostConfig.java:488)at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java :311)at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)at org.apache.catalina.core。在org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)处的org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)处的StandardHost.start(StandardHost.java:719) .apache.catalina.core.StandardService.start(StandardService.java:516)at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)at org.apache.catalina.startup.Catalina.start(Catalina .java:578)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:288)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java: 413)
有一点需要研究,ClassNotFoundException并不总是意味着列出的类(在你的情况下org.springframework.web.context.ContextLoaderListener)没有找到,这可能意味着该类无法加载。
如果该特定类因任何原因无法加载,例如它有一个引用另一个未找到的类的静态块,则类加载器将报告未能加载为“ClassNotFoundException”。
确保您的WEB-INF / lib目录不包含Tomcat默认库中也存在的类/ jar。 如果有多个版本,这有时会导致加载失败。 通过将jars解压缩到classes目录中,您可能会按照路径顺序移动类,这就是为什么它可以起作用。
所以,我仍然没有理由为什么会发生这种情况,但我终于能够得到它的工作。 通常,我们使用'unzip'将war解压到部署目录中。 我把它改成使用'罐子',一切都神奇地运作。
我不知道为什么会这样。 我尝试了所有其他排列方式(检查我们的部署文件夹,符号链接,权限,所有权等),这是唯一有所作为的事情,即使对两个解压缩文件夹进行区分也显示它们是相同的,具有相同的权限,但只有一个工作,一个没有
另外值得注意的是:生产部门多年来一直在使用“解压缩”。 我真的无法弄清楚这一点,但我很高兴至少能够做其他事情。
链接地址: http://www.djcxy.com/p/56835.html上一篇: Tomcat 6 not loading jars from WEB
下一篇: Setting the Encryption key for the DataBase (Sybase Unwired Platform)