본문 바로가기
기타/Setting

[Setting] mac에서 jenv로 java JDK 버전 관리하기

by 개발 Blog 2024. 7. 23.

jenv를 이용하면 간단한 명령어로 JDK 버전을 바꿀 수 있다. 

필자는 JDK11와 JDK17로 설정해 보겠다.

 

1. Homebrew로 JDK11과 JDK17을 설치한다.

brew install openjdk@11
brew install openjdk@17

 

2. jenv 설치를 한다.

brew install jenv

 

3. jenv 설치가 완료되면 jenv를 쉘에 설정한다.

brew install jenv

# zsh를 사용하는 경우
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc
source ~/.zshrc

# bash를 사용하는 경우
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

 

 

4. JAVA_HOME 초기화 (필요한 경우)

기존 JAVA_HOME 설정이 jenv와 충돌할 수 있으므로 초기화한다.

unset JAVA_HOME

 

5. JDK를 jenv에 추가한다.

 

JDK경로 탐색은 /usr/libexec/java_home -V를 검색한다.

 

만약 /usr/libexec/java_home -V를 검색했는데 JDK의 모든 목록이 나타나지 않는다면 

Homebrew가 JDK를 /Library/Java/JavaVirtualMachines/가 아닌 /opt/homebrew/opt/ 및 /opt/homebrew/Cellar/ 디렉터리에 설치하기 때문이다.

java_home 명령어는 기본적으로 /Library/Java/JavaVirtualMachines/ 경로를 탐색한다.

따라서, Homebrew가 설치한 JDK를 /Library/Java/JavaVirtualMachines/ 디렉토리에 심볼릭 링크로 연결하면 된다.

# JDK 11을 심볼릭 링크로 연결
sudo ln -sfn /opt/homebrew/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk

# JDK 17을 심볼릭 링크로 연결
sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk

이렇게 하면 java_home 명령어가 Homebrew를 통해 설치된 JDK를 인식할 수 있다.

 

# jenv에 JDK 11 추가
jenv add /opt/homebrew/opt/openjdk@11/libexec/openjdk.jdk/Contents/Home

# jenv에 JDK 17 추가
jenv add /opt/homebrew/Cellar/openjdk@17/17.0.12/libexec/openjdk.jdk/Contents/Home

 

6. jenv 리프레시를 한다.

jenv rehash

 

7. JDK 버전을 전환해 본다.

jenv global 11.0
java -version

 

jenv global 17.0
java -version

 

 

참고 : jenv는 자체적으로 JAVA_HOME을 관리하므로 만약 위와 같이 변경이 되지 않는다면 JAVA_HOME을 수동으로 설정해야 한다.

 

1) JAVA_HOME 초기화

unset JAVA_HOME

 

2) ~/.zshrc 파일에 jEnv 설정 추가

export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"

 

3) 설정 적용

source ~/.zshrc

 

이제 jenv를 사용해서 쉽게 JDK 버전을 관리할 수 있다.