여러버전의 JDK를 하나의 우분투 서버에서 사용하고 싶다.
(내가 그러했다...토이 프로젝트는 JDK11이고 공부하던 책의 예제는 JDK1.8기반이었다. )
본인의 우분투에 다른 버전의 JDK가 설치되어있어야한다.
(하나의 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/