서버에 여러가지 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