ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Mac OS] homebrew로 Java11 설치 & 여러가지 버전 변경하기 (+ Error:java: invalid source release: 11 해결)
    개발/Java 2020. 12. 28. 03:32

    개요

    백기선님의 더 자바, 애플리케이션을 테스트하는 다양한 방법 강좌를 수강하기 시작했는데, 시작하자마자 문제가 생겼다.
    스프링부트 프로젝트를 생성하고 시험삼아 테스트 클래스를 런 시켜보았는데 다음 에러가 발생했다.
    Error:java: invalid source release: 11
    검색해보고 이유를 유추해보니, 나는 지금 자바 8버전을 사용하고 있지만 해당 프로젝트에서는 11버전을 요구하고 있는것 같았다.
    그래서 문제를 해결하기 위해 자바11을 설치하고, 만일을 위해 자바8로 돌아갈 수 있도록 하는 방법을 찾았다.

    homebrew로 자바11 설치하기

    homebrew란 MacOS용 패키지 관리자인데, 개발자에게 필요한 도구를 쉽게 설치할 수 있다.

    설치에 관한 내용은 여기로

    다음을 순서대로 진행한다.

    brew tap adoptopenjdk/openjdk 
    brew install adoptopenjdk11 --cask

    brew tap [저장소] : homebrew 공식 저장소 외에 다른 저장소를 사용하게 해준다.
    대부분의 게시글에서 brew cask ... 명령어를 사용하였는데, 더이상 사용되지 않는 것 같다. (depricated)
    대신 --cask로 옵션을 주면 된다.

    여러가지 자바 버전을 사용하기 위한 환경변수 설정

    1. 설치된 자바 버전과 경로를 확인한다.
    $ /usr/libexec/java_home -V
    Matching Java Virtual Machines (3):
        14.0.1, x86_64:    "OpenJDK 14.0.1"    /Library/Java/JavaVirtualMachines/openjdk-14.0.1.jdk/Contents/Home
        11.0.9.1, x86_64:    "AdoptOpenJDK 11"    /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
        1.8.0_221, x86_64:    "Java SE 8"    /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home
    
    /Library/Java/JavaVirtualMachines/openjdk-14.0.1.jdk/Contents/Home
    1. 환경변수 등록
      ~/.bash_profile파일에 다음을 추가한다.
    export JAVA_8_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home"
    export JAVA_11_HOME="/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home"
    
    alias java8='export JAVA_HOME=$JAVA_8_HOME'
    alias java11='export JAVA_HOME=$JAVA_11_HOME'

    export에 나오는 경로는 각 버전의 자바가 설치된 경로다. 이렇게 환경변수로 등록해주고
    alias는 단축명령어다.

    1. 명령어로 적용시키기
      source ~/.bash_profile

    커맨드창에서 java8을 입력하면 자바8을 사용할 수 있고, java11을 입력하면 자바11을 사용할 수 있게 된다.

    정상적으로 버전이 변경되었는지 확인해보자.

    $ java -version
    openjdk version "11.0.9.1" 2020-11-04
    OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.9.1+1)
    OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.9.1+1, mixed mode)

    Error:java: invalid source release: 11

    그리고 이 에러를 해결하기 위해선 인텔리제이에서 설정이 필요하다.

    1. File -> Project Structure -> Project language level: 을 11로 변경
    2. Preference -> Build, Execution, Deployment -> Compiler - Java Compiler -> Target bytecode version을 11로 변경

    여기까지가 검색해서 나온 해결 방법인데, 나같은 경우 여전히 같은 에러를 띄우고 있었다. 그 위에 있는 다른 메세지도 확인해보니 javac가 여전히 자바8 버전을 사용하고 있다는 것 같았다.

    정확한 해결법인지는 모르겠지만, 다음으로 해결했다.

    • 다시 File -> Project Structure로 이동
    • Project SDK:에서 11버전을 추가
      • New 버튼 -> JDK 클릭 -> 자바11 경로의 Contents -> Home 디렉토리를 등록

    하고나니 해결되었다.


    현재 사용하는 자바 버전 확인하기

    커맨드창에서 java -version

    $ java -version
    openjdk version "11.0.9.1" 2020-11-04
    OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.9.1+1)
    OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.9.1+1, mixed mode)

    설치되어 있는 자바 버전 확인하기

    커맨드창에서 /usr/libexec/java_home -V

    $ /usr/libexec/java_home -V
    Matching Java Virtual Machines (3):
        14.0.1, x86_64:    "OpenJDK 14.0.1"    /Library/Java/JavaVirtualMachines/openjdk-14.0.1.jdk/Contents/Home
        11.0.9.1, x86_64:    "AdoptOpenJDK 11"    /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
        1.8.0_221, x86_64:    "Java SE 8"    /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home
    
    /Library/Java/JavaVirtualMachines/openjdk-14.0.1.jdk/Contents/Home

    참고

    https://ifuwanna.tistory.com/247
    https://medium.com/w-logs/installing-java-11-on-macos-with-homebrew-7f73c1e9fadf
    https://medium.com/@yongkyu.jang/mac-openjdk-%EB%B2%84%EC%A0%84%EB%B3%84%EB%A1%9C-%EC%97%AC%EB%9F%AC%EA%B0%9C-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-using-homebrew-b3920e51f066

    댓글

Designed by Tistory.