java.lang.NoClassDefFoundError: java/util/Base64
at com.example.Base64Test.encode(Base64Test.java:10)
- 원인: JDK 8 이상에서 지원되는 java.util.Base64 클래스를 찾을 수 없다는 의미
→ JDK 설정이 잘못되었거나, 빌드 시 JDK 1.7 이하 대상으로 컴파일한 결과를 JDK 17에서 실행 중일 때 발생
- 해결: javac와 java 둘 다 JDK 17을 참조하고 있는지 확인
java.lang.NoSuchMethodError: java.util.Base64.getEncoder()Ljava/util/Base64$Encoder;
at com.example.Base64Test.encode(Base64Test.java:12)
- 원인: 컴파일은 JDK 8 이상으로 했지만, 실행 환경이 JDK 7 이하인 경우 발생
또는 클래스 충돌이 발생했을 가능성도 있음
- 해결:
- java -version 확인
- .classpath, pom.xml, .launch 파일에서 충돌 라이브러리 제거
java.lang.ClassCastException: class java.util.Base64$Encoder cannot be cast to class org.apache.commons.codec.binary.Base64
- 원인: Apache Commons Base64와 JDK Base64를 혼용했을 경우
- 해결:
- 둘 중 하나만 사용하도록 수정
- 클래스 import 정리:
- Apache: import org.apache.commons.codec.binary.Base64;
- Java 8+: import java.util.Base64;