개요.

인텔리제이를 통해서 일부 프로젝트는 자바8, 일부는 자바11로 작성하고 싶은 경우가 있다. 그래서 두 가지를 경우에 따라서 바꾸어야 하는데, 간간히 gradle 빌드툴과 호환이 미스매치가 되는 경우도 있다. 그렇다고 하나만 쓰기에는 또 아쉽기도 하다보니 두 개 이상 관리하는걸 구글링하면서 찾았다. 해당 포스트는 해당 내용을 정리할 것이다.

  • how to set multiple java version in windows

 

설명.

  • 우선적으로 오라클에서 jdk1.8 과 jdk11 버전을 같이 다운로드 한다.
    • 상업적인 용도나 기업에서 쓰는게 아니면 개인은 무료라고 알고 있다. 해당 이슈가 민감해서 나도 라이센스를 번역기 돌려서 읽어봤는데 큰 무리는 없을 듯하다.
  • jdk1.8 이랑  jdk11 을 결정한 이유는 openjdk 도 그렇고 현재 LTS 버전으로 제공되고 있기 때문이다. 지속적인 업데이터를 해주겠다는 의미. 그래서 현재는 자바8을 쓰는 곳이 많지만 향후 몇 년 내에는 자바11을 주로 쓰게 되지않을까 생각해본다.

각설하고, 현재 나는 아래와 같이 두 개의 jdk 가 PC 에 설치되어 있다.

 

 

인터넷을 살펴보니, 최신버전부터 jdk 환경변수 우선순위를 잡는다고 하길래 설치는 java1.8, java11 수순으로 진행했다. 이렇게 진행하고 이후에 커맨드라인에 java -version 을 치게되면 java11 로 아래와 같이 나타난다. 현재 나의 윈도우즈 PC 의 환경변수가 11로 잡혀있는 상태인 것.

 

.bat 파일을 만들어 줄 것이다. 배치파일을 통해서 환경변수를 특정 명령어 입력 시 동적으로 변경해주려고 한다.

 

java8.bat

@echo off
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_261
set PATH=%JAVA_HOME%\bin;%PATH% 
echo Display Java8 version
java -version

 

java11.bat

@echo off
set JAVA_HOME=C:\Program Files\Java\jdk-11.0.8
set PATH=%JAVA_HOME%\bin;%PATH%
echo Display Java11 version
java -version
  • @echo off 를 통해서 배치명령에 대한 echo 명령을 off 하겠다는 의미이다. 해당 구문을 주석처리하면 배치파일 실행 시 관련 명령어가 출력된다.
  • 각각의 버전에 맞는 JAVA_HOME 경로를 설정하고 이를 PATH 변수에 추가해준다.
  • 마지막에는 echo 출력과 함께 현재 설정된 자바 버전을 확인하기 위해 java -version 을 작성한다.

java8.bat 파일과 java11.bat 파일이 작성 다 되었다면, 이제는 해당 .bat 파일이 있는 경로또한 환경변수로 설정하여야 한다. 아래의 사진은 현재 내 PC path 환경변수들이다. 맨 아래줄에 살펴보면 C:\develop\env 가 있는데 해당 env 위치에 저 두 개의 배치파일이 위치하고 있어야 한다.

 

배치파일이 존재하는 위치
배치파일에 대한 환경변수 설정

 

결과 (cmd 로 확인)

java8 로 변경.

 

java11 로 변경.

 

추가내용.

  • windows git bash 로는 되지 않는다. 계속해서 11만 뜰 뿐, bash 내에서도 동적으로 환경변수를 세팅하고 export 를 해주면 좋을 것 같은데, 일단 내가 하려고 했던 건 거기까지가 아니었기 때문에 넘어갔다...
Posted by doubler
,