Java 프로그램을 작성한 다음 클러스터에 배포를 할 때 가끔씩 Java Unsupported major.minor version 52.0 에러를 만나게 된다. 톰캣(Tomcat)이나 하둡 맵 리듀스(MapReduce)처럼 jar 파일로 묶어서 배포하는 경우에 쉽게 만나볼 수 있는 에러다.
"Java Unsupported major.minor version 52.0"라는 메시지에서 알 수 있듯이 Java 버전이 맞지 않아서 발생하는 에러다. 정확히는 jar 파일을 생성한 빌드환경과 생성한 jar 파일을 실행하려는 환경이 다른 JDK 버전을 사용하고 있는 경우 발생한다. Java SE 8 (JDK 1.8)에서 빌드한 Jar 파일을 Java SE 7 (JDK 1.7)이 설치되어 있는 환경에서 실행하려고 하면 정확히 "Java Unsupported major.minor version 52.0"라는 메시지가 출력된다
대체로 실행환경은 예전 자바 버전을 사용하고 있는데, 개발환경은 최신 자바를 설치한 경우가 많다. 이 에러를 만나게 되면 배포된 환경과 빌드하는 환경의 자바 버전을 확인해보도록하자.
참고로 에러 메시지의 마지막에 있는 숫자 52.0은 jar 파일의 빌드 JDK 버전을 나타내는 숫자다. JDK 버전별 숫자는 다음과 같다.
Java 버전 | 숫자 |
Java SE 13 | 57 (0x39 hex) |
Java SE 12 | 56 (0x38 hex) |
Java SE 11 | 55 (0x37 hex) |
Java SE 10 | 54 (0x36 hex) |
Java SE 9 | 53 (0x35 hex) |
Java SE 8 | 52 (0x34 hex) |
Java SE 7 | 51 (0x33 hex) |
Java SE 6 | 50 (0x32 hex) |
Java SE 5 | 49 (0x31 hex) |
JDK 1.4 | 48 (0x30 hex) |
JDK 1.3 | 47 (0x2F hex) |
JDK 1.2 | 46 (0x2E hex) |
JDK 1.1 | 45 (0x2D hex) |
"Java Unsupported major.minor version xx" 같은 메시지가 나오면 위 숫자를 확인해서 JDK 버전을 맞춰주도록 하자.
댓글