Java를 공부하면서 eclipse, vscode, sts와 같은 툴을 사용해봤는데, 짧은 기간에 많은 툴을 써본 만큼 환경설정하면서 많은 오류들이 발생했었어요. sts를 새로 설치하고나서 코테공부를 위해 vscode를 켰더니 실행이 안됐던 기억이 새록새록 나는데 이번에 데브코스를 시작하면서 새로운 마음가짐으로 JDK 버전설정을 제대로 다시 해보기로 마음먹었습니다..!!
- 문제점
제 JDK 환경설정의 문제점은
1. 버전이 3가지가 설치되어있다
2. jdk가 아닌 jre로 실행된다
3. 실행하고싶은 버전으로 바뀌질 않는다
였습니다.
정말 지금봐도 환경설정에 대해서 하나도 모르는 채로 java 언어 공부만 했던 것 같네요
원래 설치되어있던 버전은 oracle JDK 16버전과 8버전 이었습니다.
- OpenJDK 설치 및 기존버전 삭제
이번에는 OpenJDK를 써보려고 일단 다운을 받았습니다.
JDK 16.0.2 GA Release
JDK 16.0.2 General-Availability Release This page provides production-ready open-source builds of the Java Development Kit, version 16, an implementation of the Java SE 16 Platform under the GNU General Public License, version 2, with the Classpath Exce
jdk.java.net
다운을 받은 후에 압축 파일을 풀고 C:\Program Files\openjdk\jdk-16.0.2 경로에 붙여넣기 했습니다.
기존에 있던 oracle JDK를 지우기 위해서 C:\Program Files\java 안에있던 폴더들도 모두 삭제해주었습니다.
(이게 문제였습니다 ㅜ.ㅜ)
- 환경 변수 설정
다음은 환경변수 설정입니다. [제어판] - [시스템 및 보안] - [시스템] - [고급 시스템 설정]에서 [고급] - [환경 변수]에 들어가줍니다.
이곳에서 총 3가지의 시스템 변수를 수정했습니다.
JAVA_HOME : C:\Program Files\openjdk\jdk-16.0.2
CLASSPATH: %JAVA_HOME%\lib;.;
Path : %JAVA_HOME%\bin
하지만 이렇게 실행해봐도 결과는 실패였습니다
java --version
javac --version
이 두가지 명령어로 확인했는데 결과는
Error: could not open `C:\Program Files\Java\jre1.8.0_281\lib\amd64\jvm.cfg'
이러했습니다. 뭔가 이상하죠..? 분명히 8버전의 jre와 관련된 환경변수는 수정했는데 왜 저런 에러가 뜨는걸까요??
- 레지스트리 편집기
답은 레지스트리 편집기에서 찾을 수 있었습니다.
[Error] (Java 버전 중복) could not open `C:\java\lib\amd64\jvm.cfg' 에러 레즈스트리 수정하여 해결하기
[Error] (Java 버전 중복) could not open `C:\java\lib\amd64\jvm.cfg' 에러 레즈스트리 수정하여 해결하기 최근 전자정부 프레임워크를 3.6.0에서 3.8.0으로 업그레이드 하면서 자바버전도 같이 업그레이..
haenny.tistory.com
해당 블로그의 글을 참고했어요.
윈도우 검색창에서 regedit을 검색하면 레지스트리 편집기가 열립니다.
이곳에서
[HKEY_LOCAL_MACHINE] - [SOFTWARE] - [Javasoft] - [JavaRuntimeEnvironment]
경로를 따라가면 JavaHome을 볼 수 있었습니다.
하지만 분명히 처음에 jdk 폴더들을 모두 삭제했는데 이런 설정이 왜 남아있을까요??
혹시나 하는 마음에 프로그램 추가/제거 창에 들어가봤는데 JDK 프로그램이 그대로 남아있더라구요... ㅜ.ㅜ
폴더를 삭제한다고 끝이 아니었습니다.
이 문제를 가지고 2년동안 버전변경을 못한채로 java를 사용했는데 드디어 버전을 마음대로 바꿀수 있게 되었습니다ㅜㅜ
'JAVA' 카테고리의 다른 글
proxy 패턴 (0) | 2021.09.07 |
---|---|
디자인 패턴 (0) | 2021.08.06 |
Object 클래스 - 메서드 (0) | 2021.08.05 |
Constant Pool (0) | 2021.08.05 |
StringBuffer / StringBuilder의 차이점 (0) | 2021.08.05 |