【发布时间】:2012-10-14 06:14:04
【问题描述】:
当我运行 tomcat 并部署战争时,我得到: NoClassDefFoundError : org/apache/commons/collections/map/LRUMap
Invocation of init method failed; nested exception is
java.lang.NoClassDefFoundError:
org/apache/commons/collections/map/LRUMap
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
奇怪的是,我的 WEB-INF lib 文件夹中有 commons-collections-2.1.jar(我什至尝试过 3.1)。
编辑:
我确实将commons-collections 从WEB-INF/lib 复制到Tomcat lib,它似乎有效。但是我无法在生产服务器上执行此操作,为什么不采用我的WEB-INF/lib 版本?
【问题讨论】:
-
可能是类加载器问题。 (糟糕!)祝你好运!
-
如果 jar 在 tomcat/lib 中有效,但在 WEB-INF/lib 中无效,您可能需要正确重启。错误是 NoClassDefFound,它与 ClassNotFound 不同。如上所述,类加载器可能会被其他东西(jar 或类的另一个版本)弄糊涂。也许 LRUMap 也是 tomcat-jar 的一部分?
-
看起来使用 org/apache/commons/collections/map/LRUMap 的类由层次结构中高于 Webapp 类加载器的类加载器加载。见tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html。
-
难道没有办法更准确地检测问题出在哪里吗?
-
@MichaelLaffargue
Tomcat lib是什么意思?
标签: spring hibernate tomcat tomcat6 noclassdeffounderror