실행 환경

  • Apple M1 Pro (mac OS Ventura 13.2.1)
  • homebrew 4.0.6
  • JDK 11, 17

1. 자바 설치하기

Homebrew가 설치되있다고 가정합니다.

 

1.1 Homebrew 업데이트

$ brew update

 

1.2 설치 가능한 openjdk 찾기

$ brew search openjdk                                                                                                                                       ✔  19:37:06 
==> Formulae
openjdk ✔                      openjdk@11 ✔                   openjdk@17 ✔                   openjdk@8                      openj9                         openvdb

 

1.3 openjdk@17 설치하기

$ brew install openjdk@17

==> Fetching dependencies for openjdk@17: giflib, libpng, freetype, fontconfig, glib, xorgproto, libxau, libxdmcp, libxcb, libx11, libxext, libxrender, lzo, pixman, cairo, graphite2, icu4c, harfbuzz, jpeg-turbo, lz4, xz, zstd, libtiff, and little-cms2
==> Fetching giflib
==> Downloading https://ghcr.io/v2/homebrew/core/giflib/manifests/5.2.1
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/giflib/blobs/sha256:ced5a24b12f7057504aa8821a81c03c4d83ff6ba861487e25eba34b863237c20
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:ced5a24b12f7057504aa8821a81c03c4d83ff6ba861487e25eba34b863237c20?se=2023-03-12T06%3A45%3A00Z&sig=bKi
######################################################################## 100.0%

... 일부 생략

==> Fetching openjdk@17
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/17/manifests/17.0.6
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/17/blobs/sha256:aea96c54a5b8ca246bf78c973875468e16c5c3f4f5bd33ec10cc0a60df266351
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:aea96c54a5b8ca246bf78c973875468e16c5c3f4f5bd33ec10cc0a60df266351?se=2023-03-12T06%3A45%3A00Z&sig=mFv
######################################################################## 100.0%
==> Installing dependencies for openjdk@17: giflib, libpng, freetype, fontconfig, glib, xorgproto, libxau, libxdmcp, libxcb, libx11, libxext, libxrender, lzo, pixman, cairo, graphite2, icu4c, harfbuzz, jpeg-turbo, lz4, xz, zstd, libtiff, and little-cms2
==> Installing openjdk@17 dependency: giflib
==> Pouring giflib--5.2.1.arm64_ventura.bottle.tar.gz
🍺  /opt/homebrew/Cellar/giflib/5.2.1: 19 files, 540.2KB
==> Installing openjdk@17 dependency: libpng

... 일부 생략

Pruned 0 symbolic links and 2 directories from /opt/homebrew
==> Caveats
==> openjdk@17
For the system Java wrappers to find this JDK, symlink it with
  sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk

openjdk@17 is keg-only, which means it was not symlinked into /opt/homebrew,
because this is an alternate version of another formula.

If you need to have openjdk@17 first in your PATH, run:
  echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc

For compilers to find openjdk@17 you may need to set:
  export CPPFLAGS="-I/opt/homebrew/opt/openjdk@17/include"

openjdk@17 설치에 필요한 의존 관계까지 같이 다운로드 됩니다.

 

1.4 openjdk@17은  keg-only 입니다 . macOS java wrapper가 찾을 수 있도록 심볼릭 링크를 생성해야 합니다.

$ sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk

 

1.5 완료. 버전 확인

$ java --version

openjdk 17.0.6 2023-01-17
OpenJDK Runtime Environment Homebrew (build 17.0.6+0)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.6+0, mixed mode, sharing)

여러 자바 버전을 설치하면 기본적으로 가장 최신 버전의 자바 버전으로 세팅된다.

 

2. JAVA_HOME  OS 환경 변수 설정하기

 

2.1 Mac OS X 10.5 이상에서 기본 JDK의 위치 조회

// 기본 JDK 위치
$ /usr/libexec/java_home

/opt/homebrew/Cellar/openjdk@17/17.0.6/libexec/openjdk.jdk/Contents/Home
// 설치된 모든 JDK 
$ /usr/libexec/java_home -V

Matching Java Virtual Machines (2):
    17.0.6 (arm64) "Homebrew" - "OpenJDK 17.0.6" /opt/homebrew/Cellar/openjdk@17/17.0.6/libexec/openjdk.jdk/Contents/Home
    11.0.15 (arm64) "Homebrew" - "OpenJDK 11.0.15" /opt/homebrew/Cellar/openjdk@11/11.0.15/libexec/openjdk.jdk/Contents/Home
/opt/homebrew/Cellar/openjdk@17/17.0.6/libexec/openjdk.jdk/Contents/Home
// 특정 JDK 
$ /usr/libexec/java_home -v17

/opt/homebrew/Cellar/openjdk@17/17.0.6/libexec/openjdk.jdk/Contents/Home

 

2.2 macOS 10.15 Catalina 이상에서는 zsh이 기본 터미널 셸이며 또는 $JAVA_HOME에서 환경 변수를 설정

zsh 쉘 수정

vi ~/.zshrc

사용 할 JDK 버전에 따라 아래 내용을 추가한다.

 

// JDK 11 
export JAVA_HOME=$(/usr/libexec/java_home -v11)

 

// JDK 17
export JAVA_HOME=$(/usr/libexec/java_home -v17)

 

2.3 변경사항 반영 하고 확인

source ~/.zshrc
$ echo $JAVA_HOME
/opt/homebrew/Cellar/openjdk@11/11.0.15/libexec/openjdk.jdk/Contents/Home

$ java --version
openjdk 11.0.15 2022-04-19
OpenJDK Runtime Environment Homebrew (build 11.0.15+0)
OpenJDK 64-Bit Server VM Homebrew (build 11.0.15+0, mixed mode)

 

3. 다른 JDK 버전 간 전환

 

3.1 macOS의 모든 JDK 버전 확인

// 설치된 모든 JDK 
$ /usr/libexec/java_home -V

Matching Java Virtual Machines (2):
    17.0.6 (arm64) "Homebrew" - "OpenJDK 17.0.6" /opt/homebrew/Cellar/openjdk@17/17.0.6/libexec/openjdk.jdk/Contents/Home
    11.0.15 (arm64) "Homebrew" - "OpenJDK 11.0.15" /opt/homebrew/Cellar/openjdk@11/11.0.15/libexec/openjdk.jdk/Contents/Home
/opt/homebrew/Cellar/openjdk@17/17.0.6/libexec/openjdk.jdk/Contents/Home

 

3.2 ~/ .zshrc 에 아래 function 추가

jdk() {
      version=$1
      unset JAVA_HOME;
      export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
      java -version
}

 

3.3 JDK 버전 전환 확인

$ jdk 17
openjdk version "17.0.6" 2023-01-17
OpenJDK Runtime Environment Homebrew (build 17.0.6+0)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.6+0, mixed mode, sharing)

$ jdk 11
openjdk version "11.0.15" 2022-04-19
OpenJDK Runtime Environment Homebrew (build 11.0.15+0)
OpenJDK 64-Bit Server VM Homebrew (build 11.0.15+0, mixed mode)

 

참고 

https://mkyong.com/java/how-to-install-java-on-mac-osx/

https://mkyong.com/java/how-to-set-java_home-environment-variable-on-mac-os-x/

 

+ Recent posts