개발놀이터

java.lang.UnsupportedClassVersionError: Data/database has been compiled by a more recent version of the Java Runtime (class file version 60.0), this version of the Java Runtime only recognizes class file versions up to 52.0 (unable to load class Data.da.. 본문

오류해결

java.lang.UnsupportedClassVersionError: Data/database has been compiled by a more recent version of the Java Runtime (class file version 60.0), this version of the Java Runtime only recognizes class file versions up to 52.0 (unable to load class Data.da..

마늘냄새폴폴 2021. 7. 26. 18:34

이 오류가 뜬건 FTP로 웹 호스팅을 해보려다가 파일질라에 파일들을 다 쑤셔넣고 도메인을 치고 들어갔을 때 발생한 오류이다. 처음에는 java.lang.UnsupportedClassVersionError: Data/database라는 문구만 나와서 당황했는데 가끔가다 오류내용이 풀로 나와서 구글링 해보았다. 문제는 자바 런타임 버젼이 너무 높아서 (최신버젼이라) 인식을 못한다는것이었다.  이를 해결하기 위해선 몇가지 맞춰야하는 것들이 있다.

 

1. jdk버전 + 환경변수설정

2. 해당 프로젝트의 build path의 JRE 시스템 라이브러리

3. 마지막으로 해당 프로젝트 Properties에 들어갔을 때 보이는 Project Facets의 Java 버전 확인

 

먼저 오류문을 해석해보면 너는 지금 클래스파일 버전 60.0을 사용중인데 지금 자바 런타임은 클래스파일 52.0밖에 인식을 못해 그래서 Data패키지의 database 클래스를 로드할 수 없어 라는 뜻이다. = 니 버전을 52까지 낮춰라

 

먼저 클래스 파일 60.0 52.0 이런것들을 해석해야한다. 클래스 파일들 뒤에 쓰여있는 숫자들은 SE버전을 의미한다.

 

  • 45 = Java 1.1
  • 46 = Java 1.2
  • 47 = Java 1.3
  • 48 = Java 1.4
  • 49 = Java 5
  • 50 = Java 6
  • 51 = Java 7
  • 52 = Java 8
  • 53 = Java 9
  • 54 = Java 10
  • 55 = Java 11
  • 56 = Java 12
  • 57 = Java 13

60.0은 java16 버전을 의미한다. 우리가 맞춰야 할 52버전은 java8버전 즉 JavaSE - 1.8이다. 

 

먼저 첫번째 jdk를 1.8버전을 다운받고 환경변수 설정까지 해준다. jdk1.8 환경변수 설정 이라고 구글링하면 쉽게 알 수 있다.

 

두번째 해당 프로젝트의 build path의 JRE시스템 라이브러리 바꾸기

프로젝트 우클릭 - Build Path 클릭 - Libraries탭 - Add Library 클릭

JRE System Library 클릭 후 Next 클릭

Execution environment선택 - 목록 클릭 - JavaSE-1.8클릭 - Finish 클릭 - 기존에 있던 JRE System Library 삭제 - Apply and Close 클릭

이렇게하면 JRE 시스템라이브러리 버전을 1.8로 맞추는것이 끝이났다.

 

마지막 세번째 Project Facets의 Java 버전 변경

이건 두번째 JRE시스템 라이브러리를 바꿨는데 얘가 인식하고 있는 Project Facets 버전은 안바꿔줘서 그렇다. 

 

해당 프로젝트 우클릭 - Properties - Project Facets 클릭 - Java오른쪽에 있는 version클릭 - 1.8로 변경

 

이렇게 세단계를 모두 마치면 해당 오류는 안뜨는것을 확인할 수 있다.