검색결과 리스트
글
Java Version Switcher for Windows
Windows 10 Home 1903
에서 테스트한 내용입니다.
- 목차
- 스크립트파일 경로 지정
CMD 사용자
를 위한 방법GitBash
사용자를 위한 방법 (Linux사용자도 참조 가능)- 마치며 (예제요약)
- 참조
Windows에서 Java Version을 쉽게 바꾸는 환경을 만들고 싶었습니다.
경우에 따라서 Version을 자주 변경하며 사용하는 분들도 있습니다.
Windows환경 개발자라면 'C:\Program Files\Java
' 경로에
다양한 Version의 JDK가 설치되어 있을 것으로 생각됩니다.
Version을 한 번 바꾸려면 정말 성가십니다.
- 환경변수를 변경해야하고 (변경하러 가는 동선이 길다..)
- 변경하더라도 탐색기(Explorer)나 CMD 같이 파일 시스템과 연관된 무언가가 열려있을 때 바로바로 안 바뀌기도 합니다.
이따금 IDE를 벗어나야하는 상황이 있습니다.
개발상 IDE에서
간단하게 프로젝트에 필요한 JDK로 설정할 수 있고영구적으로 변경
이라면 Windows의 환경변수로 변경하는 게 최선이라 생각합니다.
하지만, 다양한 버전의 JDK를 테스트해야만 하며
별다른 인프라가 없는 분께 도움이 될 것같습니다.
쉽게 변경-적용하는 법을 살펴 봅시다.
0. 스크립트파일 경로지정
우선~
- 어디서든 실행시킬
스크립트파일의 경로 만들고
,C:\Program Files\Java\
에script
폴더를 만듭니다.
환경변수 설정
을 해주는 밑작업이 필요합니다.- 방금 만든
C:\Program Files\Java\script
라는 경로를 Path 환경변수에 추가합니다.
- 방금 만든
1. CMD 사용자를 위한 방법
1-1. Session적용방식 - (세션적용
)
현재 사용하는 터미널(CMD)의 세션에서만 적용시키는 방식이다.
CMD를 종료하기 전까지
Java Version을 적용`할 수 있다.- 참조: https://www.happycoders.eu/java/how-to-switch-multiple-java-versions-windows/
1) .bat 파일 만들기
C:\Program Files\Java\script\
java7.bat
@echo off set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_80 set Path=%JAVA_HOME%\bin;%Path% echo Java 7 activated. java -version
C:\Program Files\Java\script\
java8.bat
@echo off set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_191 set Path=%JAVA_HOME%\bin;%Path% echo Java 8 activated. java -version
C:\Program Files\Java\script\
java9.bat
@echo off set JAVA_HOME=C:\Program Files\Java\jdk-9.0.4 set Path=%JAVA_HOME%\bin;%Path% echo Java 9 activated. java -version
※ Program Files경로에서
파일변경이 어렵다면 다른 경로에서 파일을 생성하여 복사
한다.
2) 실행
java7
java -version
2. GitBash 사용자를 위한 방법
GitBash 환경에서는 Windows의 환경설정을 유연하게 적용하거나 하지 못합니다.
위에서 만든 .bat 파일을 실행해 보아도 GitBash 세션에는 적용되지 않습니다.
떄문에 검색으로 찾은 위의 방법에 자극을 받아 여러 시도들을 해보았습니다.
안되는 방법
과 다양한 저의 시도로 얻은 방법
들을 열거해보겠습니다.
2-1. 안되는 방법
Shell파일로 환경변수를 변경하여 터미널세션에 적용하고 싶었지만 방법을 찾지 못했다.
Shell 실행중에는 JAVA_HOME 변수가 적용되지만 사용자 메인세션에는 적용되지 않는다. 실행이 끝나면 원래대로 돌아간다.
환경변수 변경시도
#!/usr/bin/env sh export JAVA_HOME="C:\Program Files\Java\jdk1.7.0_80" echo "Java 7 activated." java -version
2-2. 한 번의 명령 실행에만 적용하기 (일회명령적용
)
한 번의 명령 실행
에만 Java Version을 변경-적용할 수 있다.
1) Shell 파일 만들기
C:\Program Files\Java\script\
injava7
#!/usr/bin/env sh export JAVA_HOME="/c/Program Files/Java/jdk1.7.0_80" export PATH="$JAVA_HOME\bin:$PATH" "$@"
C:\Program Files\Java\script\
injava8
#!/usr/bin/env sh export JAVA_HOME="/c/Program Files/Java/jdk1.8.0_191" export PATH="$JAVA_HOME\bin:$PATH" "$@"
C:\Program Files\Java\script\
injava9
#!/usr/bin/env sh export JAVA_HOME="/c/Program Files/Java/jdk-9.0.4" export PATH="$JAVA_HOME\bin:$PATH" "$@"
2) 실행
스크립트파일을 앞에 적어주고 뒤에 명령어를 적는다.
injava7 java -version
injava7 gradle -v
2-3. 환경파일까지 변경하기 - (영구적용
)
환경파일을 조작하는 방법이다.
하지만, Shell 실행중에 source
명령이 실행되더라도 사용자 메인세션에는 적용되지 않기 때문에
source ~/.bash_profile
을 따로 실행하거나exit
로 나갔다 오거나- GitBash창을 껐다켜면
적용된다.
또한GitBash환경에서만 적용
되는 것임을 이해하자!
1-방법A) - 오로지 Java 설정만 있을 때
설정파일(.bash_profile
) 덮어쓰기
C:\Program Files\Java\script\
java7
#!/usr/bin/env sh # REPLACE ~/.bash_profile or ~/.bashrc echo "export JAVA_HOME=\"/c/Program Files/Java/jdk1.7.0_80\"; export PATH=\"\$JAVA_HOME/bin:\$PATH\";" > ~/.bash_profile cat ~/.bash_profile # source ~/.bash_profile # java -version
1-방법B) - SED
를 이용한 부분 변경(Replace) - 설정파일(.bash_profile
)에서 /jdk로 시작
하고 "로 끝
나는 부분을 탐지하여 JDK_DIR변수값으로 변경
하기
C:\Program Files\Java\script\
java7
#!/usr/bin/env sh # REPLACE ~/.bash_profile or ~/.bashrc JDK_DIR="jdk1.7.0_80" sed -i "s/\/jdk.*\"/\/$JDK_DIR\"/" ~/.bash_profile cat ~/.bash_profile # source ~/.bash_profile # java -version
2) 실행
실행 후 껐다켜서 적용
java7 exit
OR
실행 후
source
명령으로 적용java7 source ~/.bash_profile
3. 마치며 - Finally
개발자들이 Mac을 선호하며 Windows를 잘 안사용하곤 합니다.
이것이 도움이 될지 미지수입니다만, 저는 이방법으로 인해 나름대로 득을 봅니다.ㅎㅎ
혹시 더 좋은 방법이 있다면 피드백 부탁드립니다 (굽신굽신..)
저는 개인적으로는 Windows와 GitBash를 애용합니다.
사실 현재 저에게 놓인 개발환경에서 최선이기 때문이기도 합니다.
때문에 Windows환경에서 개발을 하며, 위에서 언급드린 스크립트파일을 모두 구비해놓고 상황에 맞게 사용합니다 :D
C:\Program Files\Java\script\
injava6 injava7 injava8 injava9 java6 java6.bat java7 java7.bat java8 java8.bat java9 java9.bat
아무쪼록 1초라도 더 버시고 행복한 인생 영위하시길 바랍니다.✨🎊
마지막으로 아래는 위에 언급했던 것들을 종류별로 열거했습니다.
가지고 계신 버전별로 생성하시면 됩니다.
3-1. CMD에서 세션적용
C:\Program Files\Java\script\java7.bat
@echo off set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_80 set Path=%JAVA_HOME%\bin;%Path% echo Java 7 activated. java -version
on CMD
java7 java -version
3-2. GitBash에서 일회명령적용
C:\Program Files\Java\script\injava7
#!/usr/bin/env sh export JAVA_HOME="/c/Program Files/Java/jdk1.7.0_80" export PATH="$JAVA_HOME\bin:$PATH" "$@"
on GItBash
injava7 java -version
3-3. GitBash에서 영구적용
C:\Program Files\Java\script\java7
#!/usr/bin/env sh # REPLACE ~/.bash_profile or ~/.bashrc JDK_DIR="jdk1.7.0_80" sed -i "s/\/jdk.*\"/\/$JDK_DIR\"/" ~/.bash_profile cat ~/.bash_profile # source ~/.bash_profile # java -version
on GItBash
java7 exit java -version
4. Reference - 참조
- How to switch Java versions in Windows (updated 03/2020 for Java 14): https://www.happycoders.eu/java/how-to-switch-multiple-java-versions-windows/
- How to use sed to find and replace text in files in Linux / Unix shell: https://www.cyberciti.biz/faq/how-to-use-sed-to-find-and-replace-text-in-files-in-linux-unix-shell/
- How to detect end of line with sed: https://unix.stackexchange.com/questions/206922/how-to-detect-end-of-line-with-sed
- How do I modify my Git Bash profile in Windows?: https://superuser.com/questions/602872/how-do-i-modify-my-git-bash-profile-in-windows
- alias for Git Bash on Windows: https://gist.github.com/wzup/36b5159d8c580b827384
- How do you set java version in windows git bash?: https://stackoverflow.com/questions/11723442/how-do-you-set-java-version-in-windows-git-bash
- Set an environment variable in git bash: https://stackoverflow.com/questions/34169721/set-an-environment-variable-in-git-bash
- How do you set java version in windows git bash?: https://exceptionshub.com/how-do-you-set-java-version-in-windows-git-bash.html
- How do you set java version in windows git bash? - windows: https://ios.developreference.com/article/24282243/How+do+you+set+java+version+in+windows+git+bash%3F
'LANGUAGE > Java & Groovy ' 카테고리의 다른 글
[Groovy] GString VS "A"+"B" VS StringBuilder (문자열조합 속도비교) (0) | 2020.03.16 |
---|---|
[Java] abstract class와 interface 차이점 (0) | 2020.03.15 |
[Java] public static void main(String[] args) 갖고 놀기 🤹♂️ (2) | 2020.03.14 |
[Groovy] try-with-resources ...... withCloseable{} 으로 대체한다? (0) | 2019.08.19 |
[Java] try-with-resources (가독성 높이기) (0) | 2019.08.19 |