Coding/JAVA

[JAVA] NoClassDefFoundError: class.$1 파일

민톨이 2025. 11. 30. 00:52
728x90

최근에 회사에서 코드 수정 후에 배포하였는데 오류가 떴다

로컬에서는 빌드가 잘 되어서 상당히 당황스러웠다

현재 회사 시스템 상, 운영 오류 로그 보려면 원격 서버 들어가서 로그 창 뒤져야 했기 때문,,,

근데 운영중인 시스템에 다른 로그까지 다 찍혀서 찾기도 힘들었는데 서비스 미 이용시간에 남아서 로그를 분석해본 결과 아래와 같은 로그가 떴다

클래스명.$1 어쩌고 로그가 뜨길래 뭔가 했는데

 

 

검색해보니 저 파일이 누락되었다고 한다. 그래서 봤더니 생긴지도 몰랐는데 클래스명+ $1.class 파일이 있어서 찾아보았다

 

코드 수정할 때 Comparator를 사용했는데, 

 

자바 컴파일러는 익명 내부 클래스(anonymous inner class) 가 등장하면
클래스명$번호.class 형태로 별도의 파일을 자동 생성한다고 한다.

 

생성되는 원인을 추려보면

1) 익명 내부 클라스(Anonymous Class) 사용

2) 람다식 (Java 8+) 사용
3) Comparator, Function 등 익명 구현체 등장

등등등,,,,

 

여기서 나의 경우 3번에 속한다.

 

정렬 코드를 넣느라 이 코드를 넣었어서 $1.class 파일이 생긴 것 같다.

이 class 파일을 서버 업로드 누락시켜서 뜬 오류로 확인됐고

다시 넣고 재배포 했더니 운영에서도 잘 돌아가는 것을 확인했다.