우분투에서 쉽게 JDK 버전 변경하기!

박상국·2021년 12월 8일
0

1. 왜 필요한가?

여러버전의 JDK를 하나의 우분투 서버에서 사용하고 싶다.
(내가 그러했다...토이 프로젝트는 JDK11이고 공부하던 책의 예제는 JDK1.8기반이었다. )

2. 방법

2.1 전제 조건

본인의 우분투에 다른 버전의 JDK가 설치되어있어야한다.
(하나의 JDK만 사용한다면 필요가 없으니까)

2.2 진행 수순

  • 2.2.1 설치된 jdk 확인
  slowlife7@slowlife:~$ dpkg -l | grep openjdk
  ii  openjdk-11-jdk:amd64                  11.0.11+9-0ubuntu2~16.04                        amd64        OpenJDK Development Kit (JDK)
  ii  openjdk-11-jdk-headless:amd64         11.0.11+9-0ubuntu2~16.04                        amd64        OpenJDK Development Kit (JDK) (headless)
  ii  openjdk-11-jre:amd64                  11.0.11+9-0ubuntu2~16.04                        amd64        OpenJDK Java runtime, using Hotspot JIT
  ii  openjdk-11-jre-headless:amd64         11.0.11+9-0ubuntu2~16.04                        amd64        OpenJDK Java runtime, using Hotspot JIT (headless)
  ii  openjdk-8-jdk:amd64                   8u292-b10-0ubuntu1~16.04.1                      amd64        OpenJDK Development Kit (JDK)
  ii  openjdk-8-jdk-headless:amd64          8u292-b10-0ubuntu1~16.04.1                      amd64        OpenJDK Development Kit (JDK) (headless)
  ii  openjdk-8-jre:amd64                   8u292-b10-0ubuntu1~16.04.1                      amd64        OpenJDK Java runtime, using Hotspot JIT
  ii  openjdk-8-jre-headless:amd64          8u292-b10-0ubuntu1~16.04.1                      amd64        OpenJDK Java runtime, using Hotspot JIT (headless)
  • 2.2.2 jdk 설치 경로 확인
    $ dpkg -L openjdk-11-jdk
    $ dpkg -L openjdk-8-jdk

    저는 아래의 경로에 설치되어 있었습니다.

    /usr/lib/jvm/openjdk-11-jdk
    /usr/lib/jvm/openjdk-8-jdk

  • 2.2.3 jdk 디렉토리 및 심볼릭 링크 생성
    $ mkdir -p ~/current/java (자바 심볼릭 링크 생성 위치)
    $ ln -s /usr/lib/jvm/java-8-openjdk ~/current/java

  • 2.2.4 update-alternatives 명령어로 java, javac, jar등 등록
    $ sudo update-alternatives --install /usr/bin/java java ~/current/java 1

  • 2.2.5 update-alternatives로 등록한 java 선택
    $ sudo update-alternatives --config java

    선택       경로                                          우선순위 상태
  ------------------------------------------------------------
    0      /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      
    1      /home/slowlife7/opt/jdk                          1         
  * 2      /home/slowlife7/current/java/bin/java            1 
    3      /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      수동 모드
    4      /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      수동 모드

  Press <enter> to keep the current choice[*], or type selection number: 2
  • 2.2.6 javac, java, javadoc도 2.2.3 ~ 2.2.5번 반복

  • 2.2.7 ~/.bash_profile 환경변수 및 alias 등록

  #!/bin/bash
  JAVA_HOME=~/opt/jdk/current_java

  alias chjdk8="rm -rf $JAVA_HOME && ln -s /usr/lib/jvm/java-1.8.0-openjdk-amd64 $JAVA_HOME"
  alias chjdk11="rm -rf $JAVA_HOME && ln -s /usr/lib/jvm/java-1.11.0-openjdk-amd64 $JAVA_HOME"

  export PATH=$PATH:$JAVA_HOME/bin
  • 2.2.8 alias로 jdk 변경하여 사용

    7.1 jdk8 사용시
    $ chjdk8
    $ java -version

    7.2 jdk11 사용시
    $ chjdk11
    $ java -version

참고 사이트
https://wgtech.github.io/posts/2019/07/14/Change-the-JDK-using-update-alternatives/

0개의 댓글