java - Tomcat 6 不从 WEB-INF/lib 加载 jar

标签 java spring classpath tomcat6 web-inf

我正在尝试查找我的 tomcat 环境中的配置问题。我们的生产服务器正在运行 tomcat 安装并从共享的 NFS 挂载中读取 war。

但是,当我尝试用一​​个独立的盒子(使用他们的配置)进行同样的 war 时,我收到下面发布的错误。

有趣的是,如果我将 WEB-INF/lib 中的所有 jar 解压到 WEB-INF/classes 中,这个错误就会消失。

所以,似乎有什么东西阻止了应用程序加载 WEB-INF/lib 路径,但我终究找不到任何会导致这种情况的 tomcat 设置,因为它正在检测应用程序和配置,只是不包括在内。

有什么想法吗?

SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387) at 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.ContainerBase.addChild(ContainerBase.java:771) at 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) 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.StandardHost.start(StandardHost.java:719) 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: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) Dec 20, 2011 4:20:38 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: Error configuring application listener of class org.springframework.security.web.session.HttpSessionEventPublisher java.lang.ClassNotFoundException: org.springframework.security.web.session.HttpSessionEventPublisher at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387) at 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.ContainerBase.addChild(ContainerBase.java:771) at 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) 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.StandardHost.start(StandardHost.java:719) 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: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)

最佳答案

所以,我仍然不知道为什么会发生这种情况,但我终于能够让它工作了。通常,我们使用'unzip' 将war 解压到部署目录中。我将其切换为使用“jar”,一切都神奇地起作用了。

不知道为什么会这样。我尝试了所有其他排列(检查我们的部署文件夹、符号链接(symbolic link)、权限、所有权等),这是唯一有所不同的事情,即使比较两个解压缩的文件夹也显示它们是相同的,具有相同的权限,但一个有效,一个无效

另请注意:生产部署多年来一直使用“解压缩”。我真的想不通这一点,但我很高兴我至少可以做点别的事情。

关于java - Tomcat 6 不从 WEB-INF/lib 加载 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8582199/

相关文章:

java - 如何使用 Selenium 设置私有(private)代理?

java - 线程上的数据库操作

java - 如何使用 Spring 4 使用动态凭证发送电子邮件

java - 为什么 Spring 框架不允许 Autowiring 原始类型?

java - 如何向另一个域发送请求并在 Spring MVC Controller 中获取响应正文?

java - 将依赖项添加到 jar 类路径 list

java - SPNEGO:在 GSS-API 级别未指定的故障(机制级别:校验和失败)

java - Gradle 无法解析 Android Studio 中的依赖项

java - 在应用程序中使用多个版本的 jar 会导致问题吗?

java - 在 Eclipse 中设置不同的 Java 类路径