java: warning: source release 17 requires target release 17

밍미·2024년 6월 24일
post-thumbnail

문제상황)

올라 프로젝트 리팩토링 하던 중 서버를 실행하니 에러가 발생한다.

원인 )

빌드하는데 자바 버전이 안맞아서 에러가 발생하는것으로 추측된다.

Try)

  1. 로컬에서 서버를 실행하면 다음과 같은 에러가 발생한다.

    -> 자바버전이 안맞나보다.
java -version

터미널에서 명령어로 현재 어떤 버전으로 설정되어 있는지 확인해줬다.

/usr/libexec/java_home -V

-> 자바 버전을 아래 명령어를 이용하여 17버전으로 변경해준다.

export JAVA_HOME=$(/usr/libexec/java_home -v 17) 

-> 자바 버전이 잘 변경된것을 확인할 수 있다.

하지만 인텔리제이를 껐다켜면 다시 22버전으로 돌아온다.

-> zsh 쉘을 열어 직접 입력해준다.

-> :wq를 입력해서 밖으로 나온다.

vim ~/.zshrc

export JAVA_HOME=$(/usr/libexec/java_home -v 17)


-> java 버전이 잘 변경되었다.


그럼에도 불구하고 에러가 발생한다.

찾아보니 java17버전에 해당하는 컴파일러를 찾지 못해 발생하는 오류라고 한다.
리팩토링을 하기위해 기존에 작성되어있던 명칭을 바꿨더니 컴파일러에 바뀐 프로젝트가 추가 되어있지 않았다.

settings > Build, Execution, Deployment > Compiler > Java Compiler 탭에서
per-module bytecode version에 현재 프로젝트를 추가해주었다.

또한
File > Project structure 탭에서 SDK와 Language level을 동일하게 17로 설정해주었다.

※ 참고 블로그
[MacOS] Java 버전(JDK version) 변경하는 방법 : https://loosie.tistory.com/454
https://velog.io/@tedxpem/java-warning-source-release-17-requires-target-release-17

결론)

-> 일단 동작은 된다.

java: warning: source release 17 requires target release 17

이 에러는 자바 버전과 컴파일러의 버전, SDK와 Language level의 버전이 서로 달라 빌드할때 컴파일러 경로를 연결하지 못하여 발생하는 에러였다.

심화)

그렇다면 자바 컴파일러는 어떻게 동작하는걸까?

소스코드를 실행할 때 서버가 동작하는 과정은 어떻게 이루어지는거지?

다음스텝)

신난다! 에러 넘어 또 에러! 😀
AWS 클라우드에 가입했던것이 비용 문제로 아이디를 삭제하고 탈퇴했기 때문에 EC2에 대해 문제가 발생한 것 같다.
AWS클라우드에 새로 가입을 해서 해결을 할 것인지.. 아니면 AWS를 걷어내고 다른 클라우드를 도입할것인지 고민해봐야겠다.

다음 클라우드의 장단점을 비교해보면 좋을 것 같다.
1. 아마존 AWS
2. 네이버 클라우드
3. MS Azure
4. Google GCP
5. 카카오 클라우드
6. 가비아 클라우드
7. Oracle 클라우드

profile
천천히 깊고 단단하게

0개의 댓글