본문 바로가기

개발/TIP

OSX 환경에서 jenv 를 활용한 버전별 JDK 사용하기

앞서 OpenJDK를 사용하는 이유와 방법에 대해 이야기했었다.

https://jogeum.net/14?category=795151

 

OSX 환경에서 OpenJDK 12 설치하기

일반적으로 java 로 개발된 프로그램을 실행 시키거나 관련된 개발 작업을 하기 위해 JDK (Java Development Kit) 를 설치해야 한다. JDK 에는 크게 2011 년에 Sun 사를 인수한 Oracle 이 개발하고 발전시키는 Ora..

jogeum.net

이때 설치되는 OpenJDK는 12 버전인데 문제는 아직도 여러 라이브러리와 프로그램이 JDK 8 기준으로 동작이 된다는 점이다. 그렇기 때문에 환경에 맞춰 로컬의 JDK 버전을 변경하면서 사용을 해야 되는데 이것을 위해 jenv를 설치해 JDK 버전을 유동적으로 관리하도록 해 보자.

brew 설치

먼저 jenv를 설치하기 위해 brew를 사용한다고 가정한다. 만약 brew 가 없다면 먼저 brew를 설치하자.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

jenv 설치

아래 명령어를 통해 jenv를 설치한다.

brew install jenv

Shell 환경정보에 설정 정보 추가

Shell 환경정보에 jenv 관련 설정 정보를 추가한다. 이때 Shell의 종류(bash, zsh)에 따라 설정해야 되는 위치가 달라지니 주의하자.

# Shell: bash
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile

source ~/.bash_profile
# Shell: zsh
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc

source ~/.zshrc

JDK 8 설치하기

JDK 8 은 예전에는 brew를 통해 설치를 할 수 있었는데 아쉽게도 이제 더 이상 brew를 통해 설치를 할 수 없다.

#더이상 동작되지 않는다.
brew cask install java8
> Error: Cask 'java8' is unavailable: No Cask with this name exists.

 

대안으로 OpenJDK의 호환 JDKAdoptOpenJDK를 설치해 사용하거나 어쩔 수 없이 OracleJDK를 다운로드하는 방법 둘 중 하나를 선택해야 한다.

AdoptOpenJDK 8 설치

#AdoptOpenJDK 를 설치하기
brew tap AdoptOpenJDK/openjdk
brew cask install adoptopenjdk8

 

OracleJDK 8 설치

OracleJDK 다운로드 경로로 이동해 OSX 환경에 맞는 JDK 8 버전을 내려받아 설치를 진행한다. 여기선 OracleJDK를 가지고 설치를 진행했다.

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

Java SE Development Kit 8 - Downloads

Java SE Development Kit 8 Downloads Thank you for downloading this release of the Java™ Platform, Standard Edition Development Kit (JDK™). The JDK is a development environment for building applications, applets, and components using the Java programming la

www.oracle.com

jenv에 versions을 추가

이제 피씨에 설치된 JDK 항목을 jenv version에 관리할 수 있도록 추가 설정한다.

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/openjdk-12.0.1.jdk/Contents/Home

 

jenv에 설정이 잘 되어 있는지 versions 명령을 확인해 보자. 설치된 JDK 버전에 따라 표시되는 내용은 다르겠지만 비슷한 형태를 가질 것이다. 리스트를 보면 OpenJDKOracleJDKjenv에 등록을 했는데 1.8.0.211, 12.0, 12.0.1과 같은 숫자도 같이 표시되는 것을 의아하게 생각할 수도 있겠지만 이것은 일종의 alias처럼 동작이 되는 값이니 신경 쓰지 않도록 하자.

jenv versions
  system
  1.8.0.211
  12.0
  12.0.1
  openjdk64-12.0.1
  oracle64-1.8.0.211

 

jenv에 plugin 을 추가

자 이제 설정의 마지막이다. 터미널 창에 plugin 을 활성화해해 주면 되는데 enable-plugin 명령을 찾을 수 없다고 오류가 떨어지면 터미널 창을 다시 시작해서 입력한다.

jenv enable-plugin maven
jenv enable-plugin export

 

jenv 사용

jenv를 사용할 때 2가지 방식이 있는데 하나는 global 설정으로 모든 터미널 창에 동일한 JDK 버전을 설정하는 것이고 또 다른 하나는 local 설정으로 터미널에 위치하고 있는 폴더 기준으로 하위 폴더에 영향을 미치는 JDK 버전을 설정하는 것이다. 프로젝트나 프로그램이 실행되는 상황에 따라서 2가지 방식을 적절히 활용해 사용하면 된다.

#JDK 8 로 설정
jenv global 1.8.0.211

#JDK 12 로 설정
jenv global 12.0.1

 

local 설정을 통해 터미널에 위치하고 있는 폴더의 JDK 버전을 설정했다면 jenv 가 해당 폴더에. java-version 파일이 생성하면서 JDK 버전이 적용되었음을 표시를 하게 된다. 만일 해당 폴더의 JDK 버전을 되돌리고 싶다면 단순히. java-version 파일을 삭제만 하면 된다.

#JDK 8 로 설정
jenv local 1.8.0.211

#JDK 12 로 설정
jenv local 12.0.1

 

자 그럼 정말 잘 설정이 되었는지 JDK 8을 사용하겠다고 설정해 보자.

#JDK 8 을 사용하겠다고 설정 했을때 
jenv global 1.8.0.211


java -version

java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)


jenv versions
  system
* 1.8.0.211 (set by /Users/jojeongho/.jenv/version)
  12.0
  12.0.1
  openjdk64-12.0.1
  oracle64-1.8.0.211

 

'개발 > TIP' 카테고리의 다른 글

OSX 환경에서 jenv 를 활용한 버전별 JDK 사용하기  (3) 2019.04.25
OSX 환경에서 OpenJDK 12 설치하기  (0) 2019.04.24