본문 바로가기

OS/LINUX, UNIX

특정 문자열을 포함하는 파일들을 find 하기 (ClassNotFoundError, NoClassDefFoundError, NoSuchMethodError 원인 파악)

어플리케이션 deploy 시 아래와 같은 에러가 발생하는 상황이 있다.

ClassNotFoundError, NoClassDefFoundError, NoSuchMethodError 

 

어플리케이션 내 라이브러리와 WAS서버 내 라이브러리 간 우선순위 충돌로 인해 발생하기도 하지만,

대부분 어플리케이션 내 라이브러리에 특정 jar 파일이 없어서 발생하는 의존성 문제가 대부분이다.

jar 파일의 버전이 너무 낮거나 높아서 발생하기도 한다.

 

ClassNotFoundError, NoClassDefFoundError, NoSuchMethodError 등의 에러 발생 시

WAS 서버 로그에 어떤 class나 method가 문제되어서 에러가 발생했는지 확인 가능하다.

 

 

 

 

해당 class 혹은 method 명을 포함하는 jar 파일이

어플리케이션 라이브러리 내에 있는지 우선 확인해보면 좋다.

find와 grep 명령어를 조합하여 확인할 수 있다.

 


 

#. 사용 방법

grep '찾고자 하는 키워드' `find ./ -name "*.jar"`

 


 

#. 사용 예시

org.apache.tomcat.util.buf.Base64 클래스를 포함하는 jar 파일을 찾기

grep 'org.apache.tomcat.util.buf.Base64' `find ./ -name "*.jar"`