2012-10-24 4 views
3

: 는 NoClassDefFoundError를 : 조직/아파치/평민/컬렉션 /지도/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도 시도했다.)을 얻었다.

편집 : 을 WEB-INF/lib에서 Tomcat lib으로 복사했는데 작동하는 것 같습니다. 그러나 프로덕션 서버에서이 작업을 수행 할 수 없으며 내 WEB-INF/lib 버전을 사용하지 않는 이유는 무엇입니까?

+0

클래스 로더 문제 일 수 있습니다. (Yuck!) 행운을 빌어 요! –

+0

jar 파일이 tomcat/lib에서는 작동하지만 WEB-INF/lib에서는 작동하지 않는 경우 적절한 재시작이 필요할 수 있습니다. 오류는 ClassNotFound와 같지 않은 NoClassDefFound입니다. 위에서 언급했듯이 클래스 로더는 다른 버전의 jar 또는 클래스와 혼동을 일으킬 수 있습니다. 어쩌면 LRUMap도 바람둥이 병의 일부입니까? – wemu

+1

org/apache/commons/collections/map/LRUMap을 사용하는 클래스는 Webapp 클래스 로더보다 계층 구조가 높은 클래스 로더에 의해로드됩니다. http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html을 참조하십시오. – Potejciak

답변

3

Ok 그래서 commons-collections 버전 3.2.1을 넣었고 오류가 사라졌습니다. 불행히도이 버전에 의존하는 라이브러리를 아직 모릅니다. mvn dependency:tree도 도움이되지 않았습니다 ...

+0

당신은'pom.xml '과 스프링 빈 정의 (관련 부분) – mzzzzb

1

종속성에 대해 xdoclet 일 때이 예외가있었습니다.

이 종속성이있는 경우 제외하십시오.

0

나는 똑같은 문제가있다. 대답을 승인하기에는 너무 늦었을 수도 있지만, 미래에이 문제가있는 사람들에게는 여전히 유익하다. 그래서 net.sf.jasperreports에서 commons-collections를 제외 시켰습니다. 그 후 tomcat은 문제없이 완벽하게 실행됩니다.

<dependency> 
    <groupId>net.sf.jasperreports</groupId> 
    <artifactId>jasperreports</artifactId> 
    <version>4.1.1</version> 
    <type>jar</type> 
    <scope>compile</scope> 
    <exclusions> 
     <exclusion> 
      <artifactId>commons-collections</artifactId> 
      <groupId>commons-collections</groupId> 
     </exclusion> 
    </exclusions> 
</dependency> 
관련 문제