티스토리 뷰

반응형

안녕하세요! 오늘은 IntelliJ IDEA에서 발생할 수 있는 java.lang.UnsupportedClassVersionError에 대해 알아보고, 이 에러를 해결하는 방법에 대해 자세히 설명드리겠습니다. 이 에러는 프로젝트를 실행하려고 할 때 발생할 수 있으며, 주로 Java 런타임 버전과 컴파일된 클래스 파일 버전이 일치하지 않을 때 발생합니다.

 

에러메시지 


오류: 기본 클래스 ai.test.msa_user_service.MsaUserServiceApplication을(를) 로드하는 중 LinkageError가 발생했습니다. java.lang.UnsupportedClassVersionError: ai/test/msa_user_survey_service/MsaUserServiceApplication 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 55.0

Disconnected from the target VM, address: '127.0.0.1:13005', transport: 'socket
  • 프로젝트를 진행하던 도중 IntelliJ에서 빌드를 진행하는 과정중에 해당 에러가 발생되었습니다.
  • 이 에러는 컴파일된 Java 클래스 파일이 현재 사용 중인 Java 런타임 버전보다 더 최신 버전에서 생성되었기 때문에 발생합니다. 위 예시에서는 클래스 파일 버전 60.0(Java 16 또는 그 이상)으로 컴파일된 파일을 Java 11 런타임에서 실행하려고 시도했기 때문에 발생한 것입니다.

 

 

갑작스러운 에러 발생 원인

프로젝트가 잘 동작하다가 갑자기 이 에러가 발생하는 원인은 여러 가지가 있을 수 있습니다. 저의 경우에는 아래 원인 중 소스코드가 변경되면서 Java 버전이 변경되면서 발생되었습니다.

 

1. 프로젝트 설정 변경

  • 새로운 종속성(dependency)을 추가하거나, 기존 종속성의 버전을 업데이트하면서 컴파일러 설정이 변경되었을 수 있습니다.
  • 빌드 도구(예: Maven, Gradle)의 설정 파일이 변경되었을 수 있습니다.

2. IDE 설정 변경

  • IntelliJ IDEA의 설정이 업데이트되면서 프로젝트의 JDK 버전이 변경되었을 수 있습니다.
  • 자동 업데이트 기능으로 인해 설정이 변경되었을 가능성도 있습니다.

3. 소스 코드 변경

  • 프로젝트에 포함된 소스 코드 중 일부가 더 높은 버전의 JDK 기능을 사용하도록 변경되었을 수 있습니다.
  • 빌드 스크립트가 수정되어 컴파일러 버전이 변경되었을 수 있습니다.

4. 환경 변화

  • 시스템에 새로운 JDK 버전을 설치하고 이를 기본 JDK로 설정하면서 기존 프로젝트가 새로운 JDK로 컴파일되었을 수 있습니다.
  • 다른 개발자가 프로젝트 설정을 변경하고 이를 공유하여 프로젝트가 더 높은 버전의 JDK로 컴파일되었을 수 있습니다.

 

 

해결 방법

이제 이 문제를 해결하는 방법에 대해 알아보겠습니다.

제가 이 문제를 해결할 때는 코드 변경으로 인해 발생한 문제였기에 이전 상태로 코드를 되돌려 더 높은 버전의 JDK 기능을 사용하지 않도록 코드를 수정하여, 현재 사용 중인 JDK 버전에서도 문제없이 동작하도록 변경했습니다.

더 높은 버전의 JDK 기능을 사용하지 않은 이유는 팀 내 다른 개발자들이 동일한 환경에서 작업할 수 있도록 프로젝트의 JDK 버전을 일관되게 유지하는 것이 중요했고, 배포 서버가 현재 사용 중인 JDK 버전을 지원하지 않을 가능성을 고려했습니다. 

 

 

1. 프로젝트의 Java 버전 확인 및 설정 변경

  • IntelliJ IDEA에서 프로젝트 구조(Project Structure)를 확인하여 프로젝트의 SDK 버전이 Java 16 이상인지 확인합니다.
  • File -> Project Structure로 이동하여 Project 섹션에서 Project SDK를 확인합니다. 필요하다면 Java 16 이상으로 설정합니다.

 

2. Java 런타임 환경 변경

  • 실행 구성을 수정하여 올바른 JDK를 사용하도록 설정합니다.
  • Run -> Edit Configurations로 이동하여 실행 구성을 선택합니다.
  • Configuration 탭에서 JRE를 Java 16 이상으로 설정합니다.

 

3. Java 16 이상 설치

  • 시스템에 Java 16 이상이 설치되어 있지 않다면, Oracle 또는 OpenJDK 웹사이트에서 Java 16 이상 버전을 다운로드하여 설치합니다.
  • 설치 후 IntelliJ IDEA에서 해당 JDK를 인식하도록 설정합니다.
    • File -> Project Structure에서 Platform Settings -> SDKs로 이동하여 새 SDK를 추가합니다.

4. 코드 변경 

  • 제가 이 문제를 해결할 때는 코드 변경으로 인해 발생한 문제를 해결하기 위해 코드를 이전 상태로 되돌렸습니다.
  • 더 높은 버전의 JDK 기능을 사용하지 않도록 코드를 수정하여, 현재 사용 중인 JDK 버전에서도 문제없이 동작하도록 변경했습니다.
  • 이러한 방식으로 코드 변경을 통해 더 이상 최신 JDK를 필요로 하지 않게 되어 java.lang.UnsupportedClassVersionError를 해결할 수 있었습니다.

5. 프로젝트 다시 빌드 및 실행

  • 모든 설정이 완료되면 프로젝트를 다시 빌드하고 실행합니다.
  • Build -> Rebuild Project를 선택하여 프로젝트를 다시 빌드합니다.

 

요약

java.lang.UnsupportedClassVersionError는 컴파일된 Java 클래스 파일이 현재 사용 중인 Java 런타임 버전보다 더 최신 버전에서 생성되었을 때 발생합니다.

이를 해결하기 위해서는 프로젝트와 런타임 환경의 JDK 버전을 일치시켜야 합니다. 프로젝트 설정, 빌드 도구 설정, 환경 변수를 확인하고, 필요한 경우 최신 JDK를 설치하여 문제를 해결할 수 있습니다. 또한, 코드 변경으로 인해 발생한 경우, 코드를 이전 상태로 되돌리거나 현재 사용하는 JDK 버전에서 동작하도록 수정하는 것도 좋은 방법입니다. 
이 글이 여러분의 문제 해결에 도움이 되길 바랍니다. 감사합니다!

 

 

반응형
댓글
반응형
공지사항