[macOS] jEnv를 사용하여 Java 버전 관리하기

[macOS] jEnv를 사용하여 Java 버전 관리하기

2023-08-03 hit count image

동일한 macOS 머신에서 여러 Java 버전을 사용하기 위해 jEnv를 사용하는 방법에 대해서 알아보겠습니다.

개요

여러 Java 프로젝트를 하나의 머신(PC)에서 개발하다보면, 각각의 프로젝트에서 사용하는 Java 버전에 따라 개발 환경을 구축해야할 경우가 있습니다.

이때, 매번 Java를 지우고 해당 프로젝트에 필요한 Java 버전을 설치할 수는 없습니다. 이번 블로그 포스트에서는 macOS에서 jEnv를 사용하여 하나의 머신에서 다양한 Java 버전을 설치하고 관리하는 방법에 대해서 알아보도록 하겠습니다.

jEnv 설치

다음 명령어를 사용하여 jEnv를 설치합니다.

brew install jenv

그런 다음, 다음 명령어를 실행하여 export 플러그인과 maven 플러그인을 활성화 시킵니다.

jenv enable-plugin export
jenv enable-plugin maven

또한, 다음 명령어를 실행하여 jEnv가 관리하는 Java 버전을 사용하도록 설정합니다.

echo 'export alias java=$HOME/.jenv/shims/java' >> ~/.zshrc`

Java 버전 리스트

다음 명령어를 실행하여 설치 가능한 Java 버전을 확인합니다.

brew search openjdk

그럼 다음과 같이 설치 가능한 Java의 버전 리스트를 확인할 수 있습니다.

==> Formulae
openjdk ✔              openjdk@11 ✔           openjdk@17 ✔           openjdk@8              openj9                 openvdb

==> Casks
adoptopenjdk                                                           adoptopenjdk/openjdk/adoptopenjdk14
adoptopenjdk/openjdk/adoptopenjdk-jre                                  adoptopenjdk/openjdk/adoptopenjdk14-jre
...

OpenJDK 설치

이번 블로그 포스트에서는 OpenJDK1117 버전을 설치해 보도록 하겠습니다. 다음 명령어를 실행하여 OpenJDK 11 버전을 설치합니다.

brew install openjdk@11

설치가 완료되면 다음 명령어를 사용하여 설치한 JDKjEnv에 등록합니다.

sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk
echo 'export PATH="/usr/local/opt/openjdk@11/bin:$PATH"' >> ~/.zshrc
export CPPFLAGS="-I/usr/local/opt/openjdk@11/include"
jenv add /usr/local/Cellar/openjdk@11/11.0.19/libexec/openjdk.jdk/Contents/Home

동일한 방법으로 OpenJDK 17 버전을 설치하고 jEnv에 등록합니다.

brew install openjdk@17

sudo ln -sfn /usr/local/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk
echo 'export PATH="/usr/local/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
export CPPFLAGS="-I/usr/local/opt/openjdk@17/include"
jenv add /usr/local/Cellar/openjdk@17/17.0.7/libexec/openjdk.jdk/Contents/Home
jenv add  /usr/local/Cellar/openjdk/20.0.1/libexec/openjdk.jdk/Contents/Home

jenv versions

설치가 완료되었다면, 다음 명령어를 실행하여 설치된 사용 가능한 Java 버전을 확인합니다.

jenv versions

그럼 다음과 같이 방금 설치한 OpenJDK 11OpenJDK 17을 확인할 수 있습니다.

* system (set by JENV_VERSION environment variable)
  11.0
  11.0.19
  openjdk64-11.0.19
  openjdk64-17.0.7

jenv version

다음 명령어를 실행하면 jEnv로 설정된 현재 Java 버전을 확인할 수 있습니다.

jenv version

그럼 다음과 같이 현재 jEnv로 선택된 Java 버전을 확인할 수 있습니다.

system (set by JENV_VERSION environment variable)

실제 Java 버전을 확인하기 위해서는 다음 명령어를 실행합니다.

java --version

그럼 다음과 같이 실제 사용중인 Java 버전을 확인할 수 있습니다.

openjdk 20.0.1 2023-04-18
OpenJDK Runtime Environment Homebrew (build 20.0.1)
OpenJDK 64-Bit Server VM Homebrew (build 20.0.1, mixed mode, sharing)

설치한 Java 버전 사용하기

이제 jEnv로 Java 버전을 변경하는 방법에 대해서 알아봅시다. 다음 명령어를 실행하면 OpenJDK 17을 전역적으로 사용할 수 있습니다.

jenv global openjdk64-17.0.7

다음 명령어를 사용하면 현재 프로젝트에만 적용할 수 있습니다.

jenv local openjdk64-17.0.7

이 명령어는 .java-version 파일을 생성하고 개발 환경에 jEnv가 활성화되어 있는 경우, 자동으로 해당 버전을 사용하도록 변경해 줍니다.

다음 명령어를 사용하면 현재 shell에서만 해당 버전을 사용할 수 있습니다.

jenv shell openjdk64-17.0.7

.java-version 파일

앞서 jenv local 명령어를 실행하면 자동으로 .java-version 파일이 생성되는 것을 확인할 수 있었습니다. 이를 통해, jEnv를 사용하는 개발 환경에서는 자동으로 Java의 버전을 변경해 줍니다.

그러므로 이 .java-version 파일을 사용하면 해당 프로젝트를 실행하기 위해 필요한 Java의 버전을 공유할 수 있습니다. 만약, 현재 프로젝트의 .java-version 파일이 없는 경우, .java-version 파일을 만들고 다음과 같이 해당 프로젝트에서 필요로 하는 Java의 버전을 작성합니다.

openjdk64-17.0.7

완료

이것으로 jEnv를 사용하여 동일한 머신에 다양한 Java 버전을 사용하는 방법에 대해서 알아보았습니다. 만약, 여러분이 다양한 Java 버전의 개발 환경이 필요한 경우 jEnv를 사용하여 버전 관리를 해보시길 바랍니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

스무디 한 잔 마시며 끝내는 React Native 책을 출판한지 벌써 2년이 다되었네요.
이번에도 좋은 기회가 있어서 스무디 한 잔 마시며 끝내는 리액트 + TDD 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
[심통]현장에서 바로 써먹는 리액트 with 타입스크립트 : 리액트와 스토리북으로 배우는 컴포넌트 주도 개발, 심통
Posts