validation 처리 오류
- 작성자 :
- 박*성
- 작성일 :
- 2009-08-04 14:07:40
- 조회수 :
- 5,132
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
동일 프로젝트 소스를 받아서 로컬에서 실행했는데 생기는 오류입니다.
다른 로컬에서는 문제가 없습니다.
심각: Servlet.service() for servlet action threw exception
java.lang.NoClassDefFoundError: antlr/TokenStream
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2395)
at java.lang.Class.getMethod0(Class.java:2642)
at java.lang.Class.getMethod(Class.java:1579)
at org.apache.commons.validator.ValidatorAction.loadValidationMethod(ValidatorAction.java:599)
at org.apache.commons.validator.ValidatorAction.executeValidationMethod(ValidatorAction.java:533)
at org.apache.commons.validator.Field.validateForRule(Field.java:766)
at org.apache.commons.validator.Field.validate(Field.java:846)
다른 로컬에서는 문제가 없습니다.
심각: Servlet.service() for servlet action threw exception
java.lang.NoClassDefFoundError: antlr/TokenStream
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2395)
at java.lang.Class.getMethod0(Class.java:2642)
at java.lang.Class.getMethod(Class.java:1579)
at org.apache.commons.validator.ValidatorAction.loadValidationMethod(ValidatorAction.java:599)
at org.apache.commons.validator.ValidatorAction.executeValidationMethod(ValidatorAction.java:533)
at org.apache.commons.validator.Field.validateForRule(Field.java:766)
at org.apache.commons.validator.Field.validate(Field.java:846)
A
안녕하세요.
정확한 프로젝트 환경이 기술되어 있지 않아 명확하지 않지만,
위 문제는 validator 를 사용하는 중에 antlr 라이브러리의 부재로 TokenStream 클래스를 찾지못해 발생한 오류로 보입니다.
maven 프로젝트에서 생성한 프로젝트라면 로컬레파지토리에 있는 antlr 디렉토리의 3.0.1 버전의 라이브러리를 삭제/확인 하시고
pom.xml 의 dependency에
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr</artifactId>
<version>3.0.1</version>
</dependency>
의 내용을 확인하신후 mvn clean 또는 install을 실행하신다면 해당 라이브러리를 자동 다운받아 설치가 될 것으로 보입니다.
validator을 사용하는 저희 샘플을 확인한 결과 org.antlr 3.0.1 을 참조하고 있으며 이 라이브러리는 maven dependency hierarchy에 antlr-2.7.7.jar 이 함께 걸려 있습니다.
위 부재 클래스는 antlr-2.X.X.jar에 포함되어 있을것으로 보이는데 문제가 생기는 로컬환경에서 자동으로 dependency hierarchy 상에 존재하는 참조 라이브러리를 바라보지 못하는 것으로 유추해 볼 때 로컬 레파지토리의 org.antlr 3.0.1 의 pom dependency 가 전자정부에서 가이드하는 레파지토리와 일치하지 않아 dependency가 끊어진 채로 있는 것이 아닐지 의심이 됩니다.
로컬 레파지토리를 전자정부 레파지토리와 동일하게 맞추시기를 권고드리고,
2.7.7 에 대한 아래 dependency 를 추가로 기술해 주는 것도 임시 방편이 될 수는 있을듯 합니다.
<dependency>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
<version>2.7.7</version>
</dependency>
antlr-3.1.X 이상에서는 위 두개의 jar 로 분리되어 있는 모듈들이 하나의 jar 로 합쳐진 것으로 보이므로 (호환성 문제가 일반적으로는 없을것 으로 보임) 라이브러리 버전을 업그레이드 하여 보시는 것도 테스트해 볼 수 있겠습니다.
정확한 프로젝트 환경이 기술되어 있지 않아 명확하지 않지만,
위 문제는 validator 를 사용하는 중에 antlr 라이브러리의 부재로 TokenStream 클래스를 찾지못해 발생한 오류로 보입니다.
maven 프로젝트에서 생성한 프로젝트라면 로컬레파지토리에 있는 antlr 디렉토리의 3.0.1 버전의 라이브러리를 삭제/확인 하시고
pom.xml 의 dependency에
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr</artifactId>
<version>3.0.1</version>
</dependency>
의 내용을 확인하신후 mvn clean 또는 install을 실행하신다면 해당 라이브러리를 자동 다운받아 설치가 될 것으로 보입니다.
validator을 사용하는 저희 샘플을 확인한 결과 org.antlr 3.0.1 을 참조하고 있으며 이 라이브러리는 maven dependency hierarchy에 antlr-2.7.7.jar 이 함께 걸려 있습니다.
위 부재 클래스는 antlr-2.X.X.jar에 포함되어 있을것으로 보이는데 문제가 생기는 로컬환경에서 자동으로 dependency hierarchy 상에 존재하는 참조 라이브러리를 바라보지 못하는 것으로 유추해 볼 때 로컬 레파지토리의 org.antlr 3.0.1 의 pom dependency 가 전자정부에서 가이드하는 레파지토리와 일치하지 않아 dependency가 끊어진 채로 있는 것이 아닐지 의심이 됩니다.
로컬 레파지토리를 전자정부 레파지토리와 동일하게 맞추시기를 권고드리고,
2.7.7 에 대한 아래 dependency 를 추가로 기술해 주는 것도 임시 방편이 될 수는 있을듯 합니다.
<dependency>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
<version>2.7.7</version>
</dependency>
antlr-3.1.X 이상에서는 위 두개의 jar 로 분리되어 있는 모듈들이 하나의 jar 로 합쳐진 것으로 보이므로 (호환성 문제가 일반적으로는 없을것 으로 보임) 라이브러리 버전을 업그레이드 하여 보시는 것도 테스트해 볼 수 있겠습니다.