[JAVA 에러] nested excption is java.lang.NoSuchMethodError: xxx.xxx.xxx.xxxx.access$0
참 학창시절에 날림공부를 많이 하다보니 기본기가 한참은 많이 떨어지는것 같다.
아직도 모르는게 너무 많아!!
오늘도 누군가에게 도움 되기를 바라며..
nested excption is java.lang.NoSuchMethodError 에러를 포스팅해본다..
✅ 나의 상황 설명
로컬에서 개발을 완료 하고 java 파일을 컴파일 하고 class 파일을 개발서버로 옮겼다.
(재시작도 함 ㅇㅇ)
그리고 나서 해당 수정된 기능을 실행헀는데..
저 nested excption is java.lang.NoSuchMethodError 에러가 뜨는거..
이런 젠장 노 서치 메소드?? 메소드를 못찾는다고..?
구글링, chat gpt 검색 시작..!
✅ 원인 찾기
구글링, chat gpt 검색해 본 결과, 저 에러에 대한 원인은 몇가지가 있었다.
1. 해당 메소드가 없거나 매개변수 갯수가 잘못된 경우
- 나는 해당 사항 없어서 패스!
2. lib 버전 불일치 문제
- 설마하고 build.gradle 확인.. -> 버전 로컬/개발 일치..
- 로컬 lib 폴더에 있는, jar 파일들도 개발서버와 똑같음..
- 이것도 아니다..
3. 클래스 파일 재컴파일
- 라이브러리 클래스 파일을 수정한 경우,
해당 라이브러리를 사용하는 모든 클래스 파일도 함께 재컴파일 해야한다.
✅ 문제 해결
3번에서 힌트를 얻었는데,
나같은 경우 수정한 class 파일 폴더에 보니깐..
$1, $2 같이 클래스 파일이 추가적으로 더 생성 되어 있었다.
예를 들면
Supernova.class 파일이 있는 폴더 경로에
Supernova$1.class
Supernova$2.class
이런식으로 클래스 파일이 몇개 더 만들어져있다.
(* 이거 intellJ 폴더 트리에는 안보이니깐.. 꼭 직접 폴더로 가서 확인해 볼것!)
컴파일 할때 이 $1, $2 파일도 같이 컴파일이 되는데..
이 $1, $2 클래스 파일들도 같이 개발서버에 옮겨줘야한다!
옮기고 나니깐 에러 없이 잘 해결 !
인텔리J 폴더 트리에 $1,$2 클래스 파일도 같이 보였으면..
더 빨리 찾았을텐데.... ^^
덕분에 하루 날렸다 ㅋㅋㅋ
[🎃참고] $1 , $2 클래스 파일은 뭐야?
근데 $1, $2 클래스 파일은 또 뭐야?
챗GPT 알려줘..!
JAVA 파일안에 익명내부클래스를 사용한 경우,
컴파일 할때 이 클래스만 따로 빼서 '$1', '$2' 같은 형태의 클래스 파일로 컴파일한다.
나같은 경우 외부 라이브러리(jar)에 있는 클래스를 가져다 쓰고있었다..
(남이 짠 코드이니..어렵도다.. )
익명 내부 클래스(Anonymous Inner Class)는 Java에서 클래스를 정의하는 특별한 방법 중 하나로, 클래스의 이름을 명시하지 않고 즉석에서 클래스를 정의하고 객체를 생성하는 방법입니다. 주로 인터페이스나 추상 클래스를 구현할 때 사용되며, 이벤트 처리나 일회성 기능 구현에 유용합니다.
'공부 > JAVA | JSP&Servlet | Spring' 카테고리의 다른 글
[JAVA] 엑셀 암호화, xls 암호화, xlsx 암호화 (org.apache.poi) (2) | 2024.09.18 |
---|---|
[JAVA] PPT 암호화 , PPTX 암호화 (org.apache.poi) (1) | 2024.09.07 |
[JAVA] JDK 설치 및 환경변수 설정하는 방법 완벽정리! (0) | 2019.09.03 |
vs code import 하는 법 / vs code import 단축키 (0) | 2019.07.19 |
Visual Studio Code (vs code) Spring 프로젝트 만드는 법! (왕초보) (3) | 2019.07.02 |
'공부/JAVA | JSP&Servlet | Spring'의 다른글
- 현재글[JAVA 에러] nested excption is java.lang.NoSuchMethodError: xxx.xxx.xxx.xxxx.access$0 에러 해결 (ft. 클래스$0, $1 파일들..)