Mac에서 JDK를 변경하는 방법
개발시에 다양한 자바 버전을 사용하는 경우가 발생하는데 그럴때마다 .zshrc
의 환경 변수를 변경하고 다시 source .zshrc
로 로드하는건 너무 번거롭다. 이 부분을 CLI로 변하게 하고 싶어서 찾아본 결과 두가지 글을 발견했다.
1. Switching Java Versions on MacOS [Snippets]
.zshrc
에 추가
alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"
alias j11="export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version"
사용방법
$ j11
이 방법의 문제점은 터미널상에서 JAVA_HOME은 변경되는데 java -version
명령어를 호출하면 여전히 전 버전을 가리키고 있는 점이다.
2. How to switch JDK version on Mac OS X
.zshrc
에 추가
function setjdk() {
if [ $# -ne 0 ]; then
if [ -n "${JAVA_HOME+x}" ]; then
removeFromPath "$JAVA_HOME/bin"
fi
export JAVA_HOME=`/usr/libexec/java_home -v $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
사용방법
JDK 1.8로 변경
# JDK 1.8로 변경
$ setjdk 1.8
# JDK 11로 변경
$ setjdk 11
이 방법은 JAVA_HOME
환경변수가 존재한다면 PATH
에서 자바환경 변수를 삭제하고 PATH
에 변경하려는 자바환경변수를 다시 넣는 방법이다. 링크의 스크립트를 돌려보니 /System/Library/Frameworks/JavaVM.framework/Home/bin
는 사용하지 않아서 제거 했다. 또한 자바 환변수를 삭제하는데 /bin
을 추가하지 않아서 setjdk
로 계속 변경하면은 가비지 패스가 쌓여서 그부분 약간 변경했다.
Jenv
Mac을 사용한다면 Jenv를 사용하는 방법이 더 좋을것 같다. 지금은 Jenv로 적용해서 사용중이다.
Leave a comment