java.lang.ClassNotFoundException, java.lang.NoClassDefFoundError 에러가 발생하였습니다. 그 원인은 무엇인가요? 이것은 컴파일 시 사용자가 지정한 컴파일된 클래스 파일이 놓이는 경로에 관련된 파일을 찾을 수 없다는 에러입니다. 어떻게 하면 이 에러를 해결할 수 있는지에 알아보겠습니다.
1. 경로 설정이 안 되어 있는 경우
java.lang.ClassNotFoundException 이 예외는 컴파일된 클래스 파일이 놓이는 경로에서 실행시키려는 클래스파일을 찾을 수 없음을 나타냅니다. 이것은 자바가 클래스 정의를 로드하려 했고, 이후 실행하려는 파일이 클래스 경로에 존재하지 않았음을 나타냅니다. 그 경로가 어디인지? 정말 파일이 없는지 직접 클래스 ClassPath를 확인하여 해당 경로에 들어가서 확인해 주시면 됩니다. 그 경로에 아무것도 없는 경우는 대부분은 설정단계를 지나쳤기 때문에, 없는 경로이거나 잘못된 경료로 설정되였기 때문입니다. 따라서 올바른 경로를 다시 재설정하십시오. 경로설정이 궁금하시다면 여기 경로설정바로가기 ( path 환경변수)를 찾아보세요
2. 메이븐사용으로 인해 다른버전으로 컴파일된 클래스 파일이 있는경우
java.lang.NoClassDefFoundError 이 예외는 JVM이 내부 클래스 정의 데이터 구조에서 클래스 정의를 찾았지만 찾지 못했음을 나타냅니다. 이것은 클래스 경로에서 로드할 수 없다는 것과 다릅니다. 일반적으로 이는 이전에 클래스 경로에서 클래스를 로드하려고 시도했지만 어떤 이유로 실패했음을 나타냅니다. 이제 클래스를 다시 사용하려고 합니다(따라서 지난번에 실패했기 때문에 로드해야 함). 이전에 로드에 실패했기 때문에 로드하려고 시도조차 하지 않을 것입니다. 이전 실패는 ClassNotFoundException 또는 ExceptionInInitializerError(정적 초기화 블록의 실패를 나타냄) 또는 기타 여러 문제일 수 있습니다. 요점은 NoClassDefFoundError가 반드시 클래스 경로 문제는 아니라는 것입니다. 이때에는 의존성 문제나 다른 문제를 찾아봐야 합니다.필자의경우 클래스파일경로의 모든 파일을 삭제후 다시 재 컴파일을 하여 해결하였습니다.
https://stackoverflow.com/questions/34413/why-am-i-getting-a-noclassdeffounderror-in-java
'JAVA' 카테고리의 다른 글
자바 스캐너 문제 3자리 정수를 키보드에서 읽어서 더하라. (4) | 2021.12.30 |
---|---|
심각한수준의 아파치 원격제어‘로그4j’ 취약점, 어떻게 패치하나요? (1) | 2021.12.13 |
자바 중수로 가는 지름길 ? 무름표연산자, 삼항연산자 (1) | 2021.12.09 |
입력형식오류, InputMismatchException (in java) (0) | 2021.11.29 |
JAVA 숫자에러 NumberFormatException 해결방법 (1) | 2021.11.26 |
댓글