페이지 트리

서버에 여러가지 Java 버전을 설치하는 경우가 자주 발생하는데, alternatives 도구를 이용해 간편하게 버전을 전환하는 방법을 정리한다.

적용 대상

  • CentOS, Red Hat Linux
  • Ubuntu의 경우 alternative 대신 upeate-alternatives 명령어 사용

Java 설치

Java 설치 후 다음 절차를 통해 java, javac 등의 java 실행 파일 경로 등록

java 등록

$ sudo alternatives --install /usr/bin/java java <java 설치 폴더>/bin/java <우선 순위>

예) /usr/lib/jvm/open-jdk-11 에 설치한 경우

$ sudo alternatives --install /usr/bin/java java /usr/lib/jvm/open-jdk-11/bin/java 100

javac 등록

$ sudo alternatives --install /usr/bin/javac javac <java 설치 폴더>/bin/javac <우선 순위>

예) /usr/lib/jvm/open-jdk-11 에 설치한 경우

$ sudo alternatives --install /usr/bin/javac javac /usr/lib/jvm/open-jdk-11/bin/javac 100

jar 등록

$ sudo alternatives --install /usr/bin/jar jar <java 설치 폴더>/bin/jar <우선 순위>

예) /usr/lib/jvm/open-jdk-11 에 설치한 경우

$ sudo alternatives --install /usr/bin/jar jar /usr/lib/jvm/open-jdk-11/bin/jar 100

JAVA_HOME, JRE_HOME 등록

환경 설정 파일에 JAVA_HOME 환경변수를 지정한다.

JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which java)))))
export JAVA_HOME
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

Linux의 경우 JAVA_HOME, JRE_HOME 아래의 방법으로 환경설정이 가능하다. 본 문서는 profile.d 방식을 예로 설명한다.

시스템 수준 설정

  •       /etc/profile
  • (별표 표시)/etc/profile.d/java.sh ← bash login shell에 적용됨

사용 수준 설정

  • ~/.bashrc
  • ~/.bash_profile

Java 버전 전환

설치된 java 버전 중 특정 버전을 선택할 수 있다.

$ sudo alternatives --config java
There are 3 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*  1           /usr/java/jdk1.8.0_151/jre/bin/java
 + 2           /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/bin/java
   3           /opt/jdk1.8.0_144/bin/java
  •  + : 사용자 지정 default, 수동 설정이 우선
  •  *  : 자동으로 설정된 default

Alternatives 부가 기능

등록된 경로 제거

$ alternatives --remove <제거할 대상>
예)
$ alternatives --remove /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/bin/java
  • 레이블 없음