본문 바로가기
JAVA

NoClassDefFoundError의 발생원인

by helloissue 2022. 12. 15.

java.lang.ClassNotFoundException, java.lang.NoClassDefFoundError  에러가 발생하였습니다. 그 원인은 무엇인가요? 이것은 컴파일 시 사용자가 지정한 컴파일된 클래스 파일이 놓이는 경로에 관련된 파일을 찾을 수 없다는 에러입니다. 어떻게 하면 이 에러를 해결할 수 있는지에 알아보겠습니다.

 

 

1. 경로 설정이 안 되어 있는 경우 

 


java.lang.ClassNotFoundException 이 예외는 컴파일된 클래스 파일이 놓이는 경로에서 실행시키려는 클래스파일을 찾을 수 없음을 나타냅니다. 이것은 자바가 클래스 정의를 로드하려 했고, 이후 실행하려는 파일이 클래스 경로에 존재하지 않았음을 나타냅니다.  그 경로가 어디인지? 정말 파일이 없는지 직접 클래스 ClassPath를 확인하여 해당 경로에 들어가서 확인해 주시면 됩니다. 그 경로에 아무것도 없는 경우는 대부분은 설정단계를 지나쳤기 때문에, 없는 경로이거나 잘못된 경료로  설정되였기 때문입니다. 따라서 올바른 경로를 다시 재설정하십시오. 경로설정이 궁금하시다면 여기 경로설정바로가기 path 환경변수)를 찾아보세요
 

2. 메이븐사용으로 인해 다른버전으로 컴파일된 클래스 파일이 있는경우 
 

java.lang.NoClassDefFoundError 이 예외는 JVM이 내부 클래스 정의 데이터 구조에서 클래스 정의를 찾았지만 찾지 못했음을 나타냅니다. 이것은 클래스 경로에서 로드할 수 없다는 것과 다릅니다. 일반적으로 이는 이전에 클래스 경로에서 클래스를 로드하려고 시도했지만 어떤 이유로 실패했음을 나타냅니다. 이제 클래스를 다시 사용하려고 합니다(따라서 지난번에 실패했기 때문에 로드해야 함). 이전에 로드에 실패했기 때문에 로드하려고 시도조차 하지 않을 것입니다. 이전 실패는 ClassNotFoundException 또는 ExceptionInInitializerError(정적 초기화 블록의 실패를 나타냄) 또는 기타 여러 문제일 수 있습니다. 요점은 NoClassDefFoundError가 반드시 클래스 경로 문제는 아니라는 것입니다. 이때에는 의존성 문제나 다른 문제를 찾아봐야 합니다.필자의경우 클래스파일경로의 모든 파일을 삭제후 다시 재 컴파일을 하여 해결하였습니다.

 

 

JAVA 8 다운로드 및 설치, 환경변수 설정, Java 개발환경 구축, JDK 8u301

자바의 유료화 발표 이후, 개발용으로 내려받을 때 이젠 손쉽게 다운하기보다는 한순간 망설여졌습니다. 개발용으로 다운로드가 무료일까? 유료일까에 대한 고민, UI 인터페이스의 변화 등으로

sayit.tistory.com

 

 

JAVA 8 다운로드 및 설치, 환경변수 설정, Java 개발환경 구축, JDK 8u301

자바의 유료화 발표 이후, 개발용으로 내려받을 때 이젠 손쉽게 다운하기보다는 한순간 망설여졌습니다. 개발용으로 다운로드가 무료일까? 유료일까에 대한 고민, UI 인터페이스의 변화 등으로

sayit.tistory.com

 

 

 

 

 

https://stackoverflow.com/questions/34413/why-am-i-getting-a-noclassdeffounderror-in-java

 

Why am I getting a NoClassDefFoundError in Java?

I am getting a NoClassDefFoundError when I run my Java application. What is typically the cause of this?

stackoverflow.com

 

댓글