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 버전을 맞춰주도록 하자.
댓글