-
반응형
MacOS에서 다수의 Java 버전을 입 맛에 맞게 설치 및 운용할 수 있는 방안을 적어보려고 한다.
OpenJDK 설치
유료 라이센스(Oracle Java)를 구입하지 않을 것이라면 대안으로써 오픈소스인 OpenJDK를 사용할 수 있을텐데, brew install 명령어를 통해서 버전별 openjdk 설치를 할 수 있다. 아래는 예시 내용으로써 17.0.3 LTS 버전을 설치하였다. 참고로 설치파일들은 /usr/local/Cellar/openjdk@XX 디렉토리에 위치하게 된다.
$ brew install openjdk@17 Running `brew update --auto-update`... ==> Auto-updated Homebrew! Updated 4 taps (homebrew/cask-versions, homebrew/core, homebrew/cask and coursier/formulas). ==> New Formulae adamstark-audiofile editorconfig-checker ijq lgeneral llvm@13 oak req vectorscan astro eget install-peerdeps libnetfilter_conntrack lunar-date pacmc swtpm verapdf aztfy evernote-backup iptables libnftnl mabel phrase-cli synergy-core webkitgtk cfonts fastnetmon jaq libnl maclaunch pixie toxcore zx czg flock kt-connect libobjc2 markdown-toc poac tremor-runtime doggo gnustep-base leapp-cli libpython-tabulate mcap podman-compose trzsz-go dump1090-mutability gold levant livekit nb qbe tuc . . .
openjdk는 LTS 버전인 8, 11, 17 설치를 제공한다.
이제 설치된 Java를 실행해야 하는데 jenv라는 도구를 사용할 것이다. jenv는 작업 중인 workspace 디렉토리에 다수의 java 버전 중 원하는 Java 버전만을 실행할 수 있도록 도와주는 도구이다.
$ brew install jenv
jenv add 명령으로 jenv에 설치된 java 버전을 추가해주자.
$ jenv add /usr/local/Cellar/openjdk@17/17.0.3 openjdk64-17.0.3 added 17.0.3 added 17.0 added 17 already present, skip installation
자 이제 원하는 workspace 디렉토리에서 사용할 버전을 명시하고 실행을 시켜보자. 현재 위치를 의미하는 "local" 그리고 버전명을 기입한다.
$ jenv local 17.0.3 $ jshell | Welcome to JShell -- Version 17.0.3 | For an introduction type: /help intro jshell> $ cat .java-version 17.0.3
java -version 또는 jshell을 실행해보면 17.0.3 버전이 잘 실행된 것을 확인할 수 있다. 그리고 대상 디렉토리에 .java-version이란 파일이 생성된 것을 알 수 있는데 해당 디렉토리가 17.0.3 버전을 사용한다는 설정 내용이다. 다른 버전으로 변경하고 싶다면 jenv local 명령을 다시 내리면 되고 아예 설정을 해지하려면 .java-version 파일을 삭제하면 된다.
jenv에서 설치된 버전을 제외하고 싶다면 remove 명령어를 사용한다.
$ jenv remove 17.0.3
실제로 삭제되는
2023년 1월 추가 내용
인텔 맥북 프로에서 M1(arm64)으로 변경하고 brew와 jenv를 재설치하였다. 최신 brew 버전이 설치되면서 영향을 받은 것으로 보이는데, brew를 포함하여 openjdk 설치 경로가 변경되었다.
- as-is: /usr/local/Cellar/openjdk@XX
- to-be: /opt/homebrew/opt/openjdk@XX
반응형