반응형


"javac" 명령어로 컴파일하고 "java" 명령어로 실행하려는데 아래와 같은 에러가 났다.

Error: A JNI error has occurred, please check your installation and try again

이어서 아래와 같은 내용이 써 있다.

Exception in thread "main" java.lang.UnsupportedClassVersionError: Main has been compiled by a more recent version of the Java Runtime (class file version 57.0), this version of the Java Runtime only recognizes class file versions up to 52.0

현재 Java Runtime 이 실행 가능한 버전보다 높은 버전으로 컴파일해서 발생했다는 뜻이다.

이는 환경변수 때문이다. 환경변수의 자세한 동작원리에 대해서는 아래 글에 설명하였다.(예상 읽기시간: 3분)
https://hoohaha.tistory.com/m/93

 

[Windows] 환경 변수란? 환경 변수의 모든 것

여러 버전의 파이썬 설치를 하며 환경변수의 중요성에 대해 알게 되었고 공부하며 얻은 정보들을 아래에 정리해둔다. 혹시라도 환경변수가 꼬여서 원하는 명령어가 실행되지 않는 사람들이 보

hoohaha.tistory.com



이를 해결하는 방법은 두 가지이다.
1. javac 명령어에 "--release 8"을 추가하여 낮은 버전으로 자바 버전을 맞춘다. (빠름, 일시적)
2. 환경변수를 수정하여 java와 javac 명령어가 사용하는 자바의 버전을 맞춘다. (귀찮음, 비교적 영구적)


1. javac 명령어에 "--release 8"을 추가하여 낮은 버전으로 자바 버전을 맞춘다.

위와 같이 잘 실행됨을 알 수 있다. 당장 급하고 1회성이라면 여기까지만 보아도 충분하다.

참고로 javac의 --release 옵션 설명은 아래와 같다.
"javac -help"를 입력하면 아래와 같이 여러 옵션들의 설명이 나오는데 해당 부분을 발췌하면 아래와 같다.

해석하면 "지정된 Java SE 릴리즈에 대해 컴파일합니다. 지원되는 릴리즈: 7, 8, 9, 10, 11, 12, 13"라는 뜻이다. 이 버전을 8로 맞춰 컴파일했으니 구버전 java 명령어로도 실행이 가능한 것이다.


2. 환경변수를 수정하여 java와 javac 명령어가 사용하는 자바의 버전을 맞춘다.

해당 방법은 아래에 포스팅하였다. 위의 ''--release" 명령어를 매번 치기 귀찮으면 아래의 방법을 시도하길 바란다.

 

[Java] java 와 javac 버전 차이날 때 해결하는 방법

java와 javac 명령어로 자바 파일을 실행할 때 버전이 안 맞아 문제가 생기는 경우가 있다. 이는 환경변수를 다시 설정하여 해결할 수 있다. 해당 과정을 아래에 적어둔다.(64비트 설치해보고, 제어

hoohaha.tistory.com



이 글이 도움이 되었기를 바랍니다.

반응형

+ Recent posts