본문 바로가기
Develop/CS

[Linux] jdk 버전 여러개 사용하기

by 연로그 2021. 4. 14.
반응형

개요

가상 컴퓨터(Ubuntu)에서 java 8 버전을 사용하다가 이번에 11 버전도 설치하게 되었다.

다만, 여러 버전을 설치한 경우 환경 변수가 자동으로 바뀌진 않는지, 기존 프로그램들에는 영향이 없을지 등이 마음에 걸려서 찾아보게 되었다.

 

목차

  1. 현재 JAVA 버전
  2. jdk 설치 방법
  3. Alternatives

1. 현재 JAVA 버전

 

다음 명령어를 통해 현재 JAVA 버전을 확인할 수 있다.

$JAVA_HOME의 경우, 엄밀히 말하자면 버전을 확인하는 명령어는 아니고 "JAVA_HOME"이라는 환경 변수에 어떤 값이 들어가있는지 확인할 수 있다.

$ java -version //자바 버전 확인
$ $JAVA_HOME    // 환경변수 확인

결과 화면


2. jdk 설치 방법

 

일단 현재 설치되어있는 java 목록부터 알아보자.

$ sudo update-java-alternatives --list

결과 화면

기존에 apt-get 명령어를 통해 설치된 jdk들이 있다면 그 목록들이 보일 것이다.

하지만 파일을 수동 설치했다면 목록에 존재하지 않을수도 있는데 이 문제는 나중에 다뤄보겠다.

일단 새로운 jdk를 설치하는 방법을 알아보겠다.

 

기본적으로 jdk 설치는 apt-get을 사용한다. (Ubuntu 기준)

$ sudo apt-get install openjdk-8-jdk

 

만약 위에서 설치하려는 jdk가 존재하지 않는다는 식의 오류가 뜨면 수동 설치를 진행해야 한다.

a. jdk.java.net/archive/ 에서 원하는 버전의 파일 다운로드

 

b. 압축 해제 후 원하는 위치로 이동

기본 명령어를 통해 설치한 경우에는 /usr/lib/jvm위치에 jdk 폴더가 존재하므로 동일한 위치에 옮겼는데 이 부분은 선택사항이다.

$ tar -xvf 파일명.tar.gz
$ mv 이동전위치 이동후위치

 

c. alternatives를 이용한 jdk 등록

새로 설치한 jdk를 alternatives에 추가한다.

맨 뒤에 숫자 1은 Priority에 등록된다.

(priority: 링크 그룹 내에서 우선순위. 숫자가 클수록 높다.)

$ sudo update-alternatives --install /usr/bin/java java 설치한jdk경로/bin/java 1

 

d. 기본적으로 사용할 java를 선택

$ sudo update-alternatives --config java

 

d 과정까지 마친 후, 'java -version' 명령어를 통해 새로 설치한 jdk가 기본으로 등록된 것을 확인할 수 있다.

 


3. Alternatives

 

jdk 설정을 하며 update-alternatives라는 명령어를 자주 사용했다. 

Alternatives에 대해 알고싶다면 먼저 '심볼링 링크'에 대해 알 필요가 있다.

 

심볼릭 링크란?

  • 링크를 연결해 원본 파일을 직접 사용하는 것과 같은 효과를 내는 링크
  • Windows의 바로가기와 유사한 개념
  • 특정 폴더에 링크를 걸어 NAS, library 원본 파일을 사용하기 위해 사용

 

Alternatives란?

  • 심볼릭 링크에 대한 정보를 생성, 제거, 유지, 표시
  • 동일/유사한 기능을 수행하는 여러 프로그램을 단일 시스템에 동시에 설치 가능

 

옵션

  • --install: 심볼릭 링크 생성하기
  • --remove: 심볼릭 링크 제거하기
  • --auto: 자동 모드 설정 (alternatives에 등록된 심볼릭 링크를 그룹 내에서 priority 가장 높은 값으로 자동 선택)
  • --config: 수동 모드 설정
  • --display: 심볼릭 링크 그룹 확인
  • --list: alternatives에 등록된 모든 심볼릭 링크 정보 확인

기타 옵션들은 참고 3을 보면 된다.


참고

1 jdk 수동설치 codechacha.com/ko/ubuntu-install-open-jdk9/

2 심볼릭 링크 qjadud22.tistory.com/22

3 alternatives 개념 linux.die.net/man/8/update-alternatives

4 alternatives 옵션 skyoo2003.github.io/post/2017/03/17/what-is-alternatives-command

반응형