macOS에서 여러 JDK 관리하기
#1 openjdk 설치하기
우선 brew search --formulae openjdk
를 통해 설치가능한 JDK를 확인하면 다음과 같다:
openjdk
openjdk@11
openjdk@17
openjdk@21
openjdk@8
openj9
openjph
openvdb
이 중 원하는 버전들을 brew install openjdk@11
과 같이 설치하자.
#2 softlink(바로가기) 생성하기
위에서 설치한 openjdk 들은 macOS가 바로 확인할 수 없다. macOS는 /Library/Java/JavaVirtualMachines
만 확인하는데, openjdk는 (M1-Mac 기준) /opt/homebrew/Cellar
에 설치되기 때문이다. 따라서 우리는 바로가기를 수동으로 생성해주어야한다. 이를 대신 해주는 간단한 스크립트를 작성해보았다:
이를 다운받아서 실행하면 된다! 수동으로는
sudo ln -sfn /opt/hombrew/opt/openjdk@{version}/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-{version}.jdk
를 각 설치한 jdk 마다 반복해주면 된다.
#3 여러 JDK 중 선택해서 실행하기
#3-1 간단한 alias
/usr/libexec/java_home -v {version}
을 통해 원하는 버전의 JDK를 가리킬 수 있다. 이를 이용해서
alias java-17="export JAVA_HOME=`/usr/libexec/java_home -v 17`; java -version"
위와 같은 코드를 ~/.zshrc
와 같은 본인이 사용하는 shell init 파일에 추가해주면 영구적으로 바로가기를 생성한 것이다. 이렇게 하고 나면 java-17
을 통해 java 17 버전으로 설정하고, java /path/to/java/file
을 통해 해당 파일을 실행할 수 있다.
끝의 java -version
은 설정 후 정확히 어떤 버전으로 설정되었는지를 표시해주기 위해 존재하는 코드이다.
#3-2 조금 더 팬시한 alias
javahome() {
unset JAVA_HOME
export JAVA_HOME=$(/usr/libexec/java_home -v "$1");
java -version
}
alias j1.8='javahome 1.8'
alias j11='javahome 11'
alias j17='javahome 17'
위와 같은 javahome()
함수를 통해 alias 하는 것이다. 기본적인 원리는 #3-1과 같으나 좀 더 쌈뽕하다! 당연히 j11
대신 javahome 11
으로도 설정이 가능하다.
References
https://medium.com/@manvendrapsingh/installing-many-jdk-versions-on-macos-dfc177bc8c2b
Subscribe to my newsletter
Read articles from Gwon Hong directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by