본문 바로가기

Tech/Tips

맥 쉘에서 java 버전 변경(스위칭)하기

반응형

이미지 출처 : Pixabay

개인 프로젝트를 진행하면서 JDK 버전을 11로 올려서 작업을 시작했습니다.

그런데 기존 관리하던 코드는 모두 JDK 8을 쓰고 있어 어떻게 각 버전으로 스위칭할지 고민하다가 다음 글을 보았습니다.

advenoh님의 글 : 맥 환경에서 여러 JDK 버전 설치하고 변경하기

 

맥 환경에서 여러 JDK 버전 설치하고 변경하기

자바 개발을 하다 보면 하나의 JDK 버전이 아니라 여러 버전을 설치해야 할 때가 종종 있습니다. 진행하는 프로젝트마다 개발하는 JDK 버전이 조금씩 다를 수 있고 새로 릴리스한 버전을 설치해서

advenoh.tistory.com

advenoh님의 스크립트를 사용하며 자바 버전을 스위칭하다가 $PATH가 쉘 세션 내에서 점점 비대해지는걸 보고 스크립트를 약간 수정하여 사용하고 있습니다.

해당 스크립트를 공유드립니다 : 

vi ~/.zshrc

(혹시 bash를 사용하는경우 vi ~/.bash_profile)

# JAVA Version Control
# DEFAULT JDK 11
export JAVA_HOME=$(/usr/libexec/java_home -v 11)
export PATH=$PATH:$JAVA_HOME/bin

javahome_usage() {
  echo "javahome - switch to different JDK version"
  echo "Usage: javahome [-h] [-v VERSION]"
  echo
  echo " -h : display usage"
  echo " -v : specific JDK version to switch"
  echo
  echo "Examples: "
  echo "># javahome -v 1.8 : switches to JDK8"
  echo "># javahome -v 11 : switches to JDK11"
  echo "># javahome : display all installed JDK and display current JDK"
}

javahome () {
  if [ "$1" = "-h" ] ; then
    javahome_usage
  fi
  if [ "$#" -eq 0 ] ; then
    /usr/libexec/java_home -V
  fi
  if [ "$#" -eq 2 ] && [ "$1" = "-v" ] ; then
    PATH=${PATH%%:/Library/Java/JavaVirtualMachines/*.jdk/Contents/Home/bin}
    unset JAVA_HOME
    export JAVA_HOME=`/usr/libexec/java_home $@`
    echo "Setting JAVA_HOME:" $JAVA_HOME
    echo
    echo "Added JAVA_HOME/bin to PATH"
      PATH=$PATH:$JAVA_HOME/bin
    echo $PATH
    echo
      java -version
  fi
}

매 javahome 명령 실행 시 마다 JAVAHOME을 초기화하고 PATH에 설정된 변수를 제거합니다.

저는 맥 OS Big Sur에서 zsh를 사용중이며 Zulu OpenJDK 1.8과 11을 스위칭하며 사용중입니다.

혹시 저랑 비슷한 상황이신 분들은 참조해주세요!

반응형