[maxOS High Sierra] JENV (Manage your Java environment) install homebrew & JAVA_HOME
공식홈페이지: http://www.jenv.be
GITHUB: https://github.com/gcuisinier/jenv
개발을 하다보면 JDK를 프로젝트에 맞춰서 바꿔줘야하는데 JENV를 사용하면 편하다고 해서 설치를 해봤다
안탑깝지만 윈도우는 안되는듯하다 뭐 맥을쓰니 상관없다만
뭐 소스코드를 받아서 직접설치해도 될것 같지만
Homebrew를 괜히 설치한게 아니니 홈브류로 진행
설치가 안되있다면 여기를 참고하자
zelkunlocal:~ zelkun$ brew install jenv ==> Downloading https://github.com/gcuisinier/jenv/archive/0.4.4.tar.gz ==> Downloading from https://codeload.github.com/gcuisinier/jenv/tar.gz/0.4.4 ######################################################################## 100.0% 🍺 /usr/local/Cellar/jenv/0.4.4: 78 files, 65.5KB, built in 7 seconds zelkunlocal:~ zelkun$ |
간단설치
설치가 끝났으니 테스트
zelkunlocal:~ zelkun$ jenv jenv 0.4.4 Usage: jenv <command> [<args>]
Some useful jenv commands are: commands List all available jenv commands local Set or show the local application-specific Java version global Set or show the global Java version shell Set or show the shell-specific Java version rehash Rehash jenv shims (run this after installing executables) version Show the current Java version and its origin versions List all Java versions available to jenv which Display the full path to an executable whence List all Java versions that contain the given executable
See `jenv help <command>' for information on a specific command. For full documentation, see: https://github.com/hikage/jenv#readme zelkunlocal:~ zelkun$ |
홈페이지에 나온데로 설정을 진행했는데
maxOS High Sierra라서 경로가 달라진건진 모르겠지만 JAVA경로가 다르니 참고
사이트에선 /System 부터 시작하는데 /Library에 들어가 있음
일단 JDK 1.6, 1.8이 설치되있으니 추가하고 버전을 확인해봄
zelkunlocal:~ zelkun$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile zelkunlocal:~ zelkun$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
zelkunlocal:~ zelkun$ jenv add /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/ oracle64-1.6.0.65 added 1.6.0.65 added 1.6 added zelkunlocal:~ zelkun$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/ oracle64-1.8.0.171 added 1.8.0.171 added 1.8 added
zelkunlocal:~ zelkun$ jenv versions * system (set by /Users/zelkun/.jenv/version) 1.6 1.6.0.65 1.8 1.8.0.171 oracle64-1.6.0.65 oracle64-1.8.0.171 zelkunlocal:~ zelkun$ jenv version system (set by /Users/zelkun/.jenv/version) zelkunlocal:~ zelkun$ |
잘되는듯
1.6으로 변경했다가 1.8로 바꾸고 시스템기본으로 변경해봄
zelkunlocal:~ zelkun$ java -version java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-468) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-468, mixed mode) zelkunlocal:~ zelkun$ jenv global 1.8 zelkunlocal:~ zelkun$ java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) zelkunlocal:~ zelkun$ jenv versions system 1.6 1.6.0.65 * 1.8 (set by /Users/zelkun/.jenv/version) 1.8.0.171 oracle64-1.6.0.65 oracle64-1.8.0.171 zelkunlocal:~ zelkun$ jenv global system zelkunlocal:~ zelkun$ jenv versions * system (set by /Users/zelkun/.jenv/version) 1.6 1.6.0.65 1.8 1.8.0.171 oracle64-1.6.0.65 oracle64-1.8.0.171 zelkunlocal:~ zelkun$ |
애석하게도 JAVA_HOME은 잡아주질 않는건지 나오진 않음
zelkunlocal:~ zelkun$ echo $JAVA_HOME
zelkunlocal:~ zelkun$ |
해당 이슈가 있는지 찾아보니
역시나… 있다
출처: https://github.com/gcuisinier/jenv/issues/44
JAVA_HOME을 잡아줄 필요는 없지만… 하는김에...
어떻게 하면 JAVA_HOME을 추가 할까고민을 하다가
.jenv/versions에 심볼릭 링크가 잡혀있는걸로 해결해보기로 함
zelkunlocal:~ zelkun$ ls -alG .jenv/versions total 0 drwxr-xr-x 8 zelkun staff 256 5 20 12:40 . drwxr-xr-x 12 zelkun staff 384 5 20 12:45 .. lrwxr-xr-x 1 zelkun staff 57 5 20 12:40 1.6 -> /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home lrwxr-xr-x 1 zelkun staff 57 5 20 12:40 1.6.0.65 -> /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home lrwxr-xr-x 1 zelkun staff 64 5 20 12:40 1.8 -> /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home lrwxr-xr-x 1 zelkun staff 64 5 20 12:40 1.8.0.171 -> /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home lrwxr-xr-x 1 zelkun staff 57 5 20 12:40 oracle64-1.6.0.65 -> /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home lrwxr-xr-x 1 zelkun staff 64 5 20 12:40 oracle64-1.8.0.171 -> /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home zelkunlocal:~ zelkun$ |
일단 JAVA_HOME을 추가해주려면
.bash_profile 에다 JAVA_HOME을 정의하고
sourece .bash_profile 하면 적용되니 이용해 보기로함
.bash_profile 파일이 없는경우 만들어주면 되지만 설정부분에서 이미 만들어져있음...
vim ~/.bash_profile
zelkunlocal:~ zelkun$ vim ~/.bash_profile
export PATH="$HOME/.jenv/bin:$PATH" eval "$(jenv init -)" export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "~/.bash_profile" 3L, 117C |
마지막줄에 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
을 추가해주고 source ~/.bash_profile 명령을 먹여주면 JAVA_HOME 이 반영된걸 확인할 수 있다
zelkunlocal:~ zelkun$ vim ~/.bash_profile zelkunlocal:~ zelkun$ source ~/.bash_profile zelkunlocal:~ zelkun$ echo $JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home zelkunlocal:~ zelkun$ |
하지만 이대로 하면 jenv로 자바버전을 변경해도 고정으로 JDK 1.8을 가지고 있기때문에
계속 1.8만 보고있기때문에 jenv를 바라보도록 바꿔줘야 한다
zelkunlocal:~ zelkun$ vim ~/.bash_profile
export PATH="$HOME/.jenv/bin:$PATH" eval "$(jenv init -)" export JAVA_HOME=$HOME/.jenv/versions/$(jenv version-name) ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "~/.bash_profile" 3L, 117C |
잘보면 마지막줄의 JAVA_HOME이 변경된걸 볼수 있다
근데 .bash_profile만 수정한다고 되는건아니고…
jenv를 사용해서 자바버전을 변경할 경우 다시 source .bash_profile 을 해줘야 반영된다
아니면 터미널을 다시 열으면 된다
(터미널이 열리면 .bash_profile을 새로 읽어 반영된다)
zelkunlocal:~ zelkun$ echo $JAVA_HOME /Users/zelkun/.jenv/versions/system
zelkunlocal:~ zelkun$ java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
zelkunlocal:~ zelkun$ jenv global 1.6 zelkunlocal:~ zelkun$ source .bash_profile
zelkunlocal:~ zelkun$ java -version java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-468) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-468, mixed mode) zelkunlocal:~ zelkun$ |
시스템에는 JDK 1.8이 기본이라 버전에 1.8이 나오는걸 볼수 있다
jenv global 1.6 으로 자바버전을 변경하고 source .bash_profile 을 실행해 자바버전이 1.6으로 바뀌고
JAVA_HOME도 1.6으로 변경된걸 볼수 있다
반쪽짜리 기능이긴하지만 JAVA_HOME도 바꿀수 있게 되었다
jenv에서 JAVA_HOME을 반영되도록 수정되는게 아니라면 당분간은 이렇게 써야할듯 하다
source 명령어 치기 귀찮으면 터미널을 새로열면 된다
이슈중에 alias로 export를 바꿔주도록 코멘트를 다신분이 계시는데
출처: https://github.com/gcuisinier/jenv/issues/44
Jenv_set_java_home 을 별도록 실행해줘야하고... 결론적으로 source 업데이트 하는거랑 다를게 없다
아니면 shell 을 하나 만들어서…
버전이 바뀌면 같이 source 업데이트를 하도록 해서 사용하면 편할 듯 싶은데
shell안에서만 바뀐다...
테스트로 test.sh 를 작성했다
zelkunlocal:shellTest zelkun$ vim ./test.sh
#!/bin/bash
echo "java set Version:"$1
jenv global $1
jenv versions
source /Users/zelkun/.bash_profile
echo "JAVA_HOME:" $JAVA_HOME
java -version
~
~
~
~
~
~
~
~
~
~
"./test.sh" 13L, 176C |
인자를 받아서 jenv에 global 로 버전을 전달하고
자바버전을 출력하고, JAVA_HOME도 출력해주도록 구성했다
zelkunlocal:shellTest zelkun$ chmod 755 ./test.sh zelkunlocal:shellTest zelkun$ ./test.sh 1.6 java set Version:1.6 system * 1.6 (set by /Users/zelkun/.jenv/version) 1.6.0.65 1.8 1.8.0.171 oracle64-1.6.0.65 oracle64-1.8.0.171 JAVA_HOME: /Users/zelkun/.jenv/versions/1.6 java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-468) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-468, mixed mode)
zelkunlocal:shellTest zelkun$ echo $JAVA_HOME /Users/zelkun/.jenv/versions/1.8 zelkunlocal:shellTest zelkun$ |
실행한 결과 쉘이 실행중일때는 JAVA_HOME이 1.6으로 변경된게 확인되지만
쉘이 종료되고 다시 1.8로 변경된걸 확인할 수 있다
[macOS High Sierra]Homebrew install wget (0) | 2018.05.31 |
---|---|
[maxOS High Sierra] Python pip install (0) | 2018.05.29 |
[maxOS High Sierra]Homebrew 설치 (0) | 2018.05.20 |
[macOS High Sierra] NODEJS 설치 (0) | 2018.05.12 |
[macOS Sierra] 맥북 공인인증서 위치 경로 (1) | 2016.11.11 |
댓글 영역