실행 환경
- 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/