상세 컨텐츠

본문 제목

[maxOS High Sierra] JENV (Manage your Java environment) install homebrew & JAVA_HOME

OS/MAC OS X

by ZelKun 2018. 5. 23. 11:30

본문

반응형

출처: http://www.jenv.be

 

공식홈페이지: 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 잡아주질 않는건지 나오진 않음

  • 참고로 따로 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로 변경된걸 확인할 수 있다


반응형

관련글 더보기

댓글 영역