-
반응형
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 jenvjenv 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.3java -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
반응형