====== jenv ======
* http://www.jenv.be/
* 디렉토리별로 별도의 Java 환경을 지정하고 변경할 수 있게 해줌.
* [[java:jenv_windows|JEnv for Windows]]
===== Install on linux bash =====
git clone https://github.com/gcuisinier/jenv.git ~/.jenv
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(jenv init -)"' >> ~/.bashrc
===== Install on linux with brew =====
brew install jenv
# activate jenv
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(jenv init -)"' >> ~/.bashrc
===== sdkman 과의 우선 순위 =====
* [[:sdkman|sdkman]] 도 Java 버전 지정 기능이 있고, jenv 도 Java 버전 지정 기능이 있는 상태인데,
* shell script 가 jenv 가 더 앞에서 활성화 될 경우 sdkman 의 Java 버전 지정이 우선하게 된다.
* 따라서, 항상 sdkman 보다 jenv 의 shell 활성화(''eval "$(jenv init -)"'')가 더 늦게 이루어져야 한다.
* 2022 년 현재, jenv 가 local 디렉토리 단위의 환경 설정이 sdkman 보다 훨씬 정확하게 잘 작동하고, 세밀한 버전이 아닌 major 버전 기반 지정(Java 17 이면 가장 최근 Java 17이 자동 적용)이 작동해서 더 좋다.
===== JAVA_HOME 설정 =====
* 기본적으로 ''jenv''로 Java 버전을 설정해도 ''JAVA_HOME'' 설정이 안먹는다.
* ''export plugin'' 을 활성화하면 ''JAVA_HOME'' 설정도 함께 변경된다.
jenv enable-plugin export
===== JVM 추가 =====
jenv add /usr/lib/jvm/java-6-oracle/
jenv add /usr/lib/jvm/java-7-oracle/
jenv add /usr/lib/jvm/java-8-oracle/
===== 사용 =====
jenv versions # 목록보기
jenv versions --bare # 딱 버전만 보여주고 부가 정보는 제외함. pipe 로 셸 스크립트등을 만들때 편함.
jenv global 1.8 # 1.8 전역 사용 설정
jenv local 1.7 # 현재 디렉토리에서 1.7 사용
# JVM 기본 옵션 지정
jenv global-options "-Xmx512m"
jenv local-options "-Xmx512m"
jenv shell-options "-Xmx512m"
# remove - 실제 JDK를 삭제하는 것은 아니고 jenv 환경에서만 제거함.
jenv remove <버전번호>