2013-10-02 2 views
0

당신의 도움이 필요합니다. 나는 Tomcat 클래스 로더를 다루는 특이한 문제에 직면하고있다. WAR가 있고 WAR 내부에 네이티브 메소드가있는 타사 JAR이 있습니다. WAR는 처음으로 개발 서버에 성공적으로 배포되었으며 약 3 개월 동안 실행되었습니다.Tomcat 클래스 로더가 작동하지 않습니다.

지난 주에 일부 코드 리팩터링을 수행하고 업데이트 된 WAR를 배포하려고 했으므로 이전 인스턴스를 삭제하고 WAR를 배포했습니다. 하지만 지금은 재배포 후에 항상 NoClassDefFoundError에 직면합니다. WAR를 여러 번 재배포하고 그 결과는 NoClassDefFoundError입니다.

이상하게도 내 노트북에 업데이트 된 WAR을 배포 할 때 Tomcat을 사용하면 정상적으로 작동합니다. 동료도 Tomcat을 사용하여 노트북에 배포하려고했으나 정상적으로 작동합니다.

작업 디렉토리에서 파일을 삭제했지만 여전히 NoClassDefFoundError가 나타납니다. 나는 Tomcat을 끄고, webapp 폴더의 인스턴스를 삭제하고, webapp 폴더에서 업데이트 된 WAR을 다시 복사하고, Tomcat을 다시 켠다. 그러나 여전히 오류가 나타난다.

개발 서버의 Tomcat에 어떤 문제가 있습니까?

+0

Tomcat의 버전을 확인하십시오. – ppeterka

+1

tomcat/work/Catalina /에서 응용 프로그램 폴더를 제거하고 서버를 다시 시작하십시오. –

+0

오류를 표시 할 수 있습니까? 당신이 종속 항아리를 삭제 한 것 같습니다. –

답변

1

JVM의 수명 기간 동안에 만 기본 라이브러리를 한 번 등록 할 수 있습니다. 나는 당신이 WAR를 업데이트 할 때, 네이티브 라이브러리를 다시 등록하려고 시도했는데, 실패했다가 NoClassDefFoundError가되었다고 생각합니다. Tomcat 서버를 다시 시작하자이 이론과 일치합니다.

기본 라이브러리가 포함 된 WAR을 제공하는 경우 가장 안전한 방법은 응용 프로그램을 업데이트해야 할 때마다 Tomcat을 다시 시작하는 것입니다.

+0

나는 개발 서버를 여러 번 다시 시작했지만 여전히 오류가 발생했습니다. 내 랩톱의 Tomcat에서도 작동하기 때문에이 솔루션에 동의하지만 개발 서버에서는 작동하지 않습니다. 다른 생각? 방법 고마워. –

관련 문제