본문 바로가기

개발공부/환경설정 (Set-up)

Windows 스프링 부트 프로젝트 빌드 오류

주말부터 스프링 강의를 듣기 시작했는데 프로젝트 설정 단계부터 오류가 발생해서 당황했다.

인텔리제이랑 jdk는 예전에 설치해서 잘 사용하고 있었는데 이번에 스프링 부트 프로젝트 파일을 빌드하고 실행시키려고 cmd 열어서 해당 폴더로 이동한 뒤에 gradlew.bat을 입력했는데 아래와 같은 오류가 발생했다.

JAVA_HOME 경로 오류메세지

인텔리제이 project structure와 gradle의 버전도 모두 동일하게 설정해놨기때문에 문제 될 부분이 없어보였는데 혹시 jdk 문제인가 싶어서 찾아봤다. 구글링해도 대부분 oracle jdk나 openjdk를 사용해서 빌드하는 사람들의 글, 질문만 있어서 별로 도움이 되지 않았다. 그래서 강의 질문 남기는 곳에 남겼는데 다른 설정에는 문제가 없어보인다고 해당 jdk 문제인 것 같다고 하셨다. 

 

그래도 혹시나 해결 방법이 있을까 싶어서 계속 구글링 해봤는데 비슷한 질문도 안 보이고 그냥 openjdk를 설치하고 환경 변수 설정을 다시 하는 게 나을 것 같다는 결론을 내렸다. 

 

그리고 나중에 또 다른 기기에서, 혹은 초기화 후에 이런 문제 생기면 정리해둔 글을 보고 다시 해결하면 편할 것 같아서 이번에 자바 JDK 버전 변경 과정을 정리해보았다. 

 

 

<openjdk 11 설치하기>

 

 

1.  윈도우용 openjdk 11 압축파일을 다운 받기

 

먼저, 아래 사이트에 들어가서 Windows용 openjdk 11.0.1(build 11.0.1+13) zip 파일을 선택해서 다운 받았다. 그리고 압축을 풀어준다.

https://jdk.java.net/archive/

 

Archived OpenJDK GA Releases

Archived OpenJDK General-Availability Releases This page is an archive of previously released builds of the JDK licensed under the GNU General Public License, version 2, with Classpath Exception. WARNING: These older versions of the JDK are provided to he

jdk.java.net

 

 

2. 압축을 풀어서 C:\Program Files 위치로 압축 푼 폴더 옮겨주기

압축을 풀어준 폴더명은 jdk-11.0.1 이라고 되어있다. 폴더명은 openjdk-버전명 이런식으로 되어있다.

 

 

 

3. 환경 변수 경로 변경하기

'시스템 환경 변수 편집' 에 들어가서 시스템 변수 목록에 있는 기존 JAVA_HOME 변수를 클릭해서 아까 복사한 경로를 붙여넣기 하면 된다.

기존의 JAVA_HOME 값은 Zulu-11로 설정되어 있는데 이걸 jdk-11.0.1로 바꿔주었다.

기존의 JAVA_HOME 변수

그렇게 하면 아래와 같이 변경된 것을 확인할 수 있다. CLASSPATH는 Zulu와 동일하게 %JAVA_HOME%\lib 으로 되어있어서 그대로 두었다. 

Path 변수에 있는 %JAVA_HOME%\bin 도 전에 설정한 그대로 두었다. 

 

 

 

4. 인텔리제이 설정 변경하기

 

환경변수 수정을 끝내고 인텔리제이의 project structure의 SDK 버전과 gradle JVM버전을 변경해주었다.

먼저 project structure 에 들어가고 project settings에 있는 SDK 버전을 좀 전에 다운 받은 openjdk 11로 변경해준다.

그 다음 Platform Settings에서 SDKs 의 JDK 경로를 JAVA_HOME 경로와 동일하게 변경한다.

 

마지막으로 Settings에 들어가고, Gradle JVM 설정을 project SDK와 동일하게 변경하면 인텔리제이 설정은 마무리된다.

 

 

5. 다시 cmd 창에서 스프링 부트 프로젝트 build 진행하기

cmd 화면을 다시 켜주고 스프링 부트 프로젝트 폴더 위치로 이동해준다. 그리고 디렉토리들 중에 gradlew.bat이라고 있는데  그대로 입력해준다. 

gradlew.bat 입력

위에 있는 cmd 오류 메세지는 Zulu로 설정되어있을 때 나타났었는데 그 때랑은 다르게 정상적으로 실행이 된다. 이 단계까지 해줬다면 이제 gradlew build를 실행해주면 된다. 그리고 dir을 입력해서 디렉토리들을 확인해준다. 목록 중에 build 디렉토리가 생긴 것을 확인할 수 있는데 cd build 를 입력해서 해당 폴더로 이동한다. 만약 build 폴더를 삭제하고 싶으면 gradlew clean 이라고 입력하면 삭제된다.

build 디렉터리로 이동하면 아래와 같은 목록을 확인할 수 있다. 여기서 libs 라는 폴더로 다시 이동해준다. 그리고 다시 dir을 입력해서 목록을 확인한다.

위의 이미지를 보면 libs 폴더 안에 ~~~~-SNAPSHOT.jar 로 끝나는 파일이 있는 것을 확인할 수 있다. 그 이름을 복사하고 아래와 같이 입력한다.

java -jar hello-spring-0.0.1-SNAPSHOT.jar

그럼 스프링 부트 프로젝트의 실행이 정상적으로 된다. 크롬에 들어가서 localhost:8080이라고 입력하면 서버 작동이 잘 되는 것을 확인할 수 있다. 

 

 

+ 추가 작업

위의 순서대로 진행하면 스프링 부트 프로젝트 실행은 잘 되지만 cmd 창에서 자바 버전을 확인하면 여전히 zulu로 설정되어 있다. 그래서 다시 구글링 해본 결과, scripts 폴더를 만들어서 .bat 파일을 만들면 버전 변경이 가능하다는 것을 확인하고 그대로 해보았다. Program Files 위치에 만들려고 했지만 사용자 권한 문제로 다른 위치에 만들었다. .bat 파일은 메모장에 아래와 같이 적어주고 파일 이름을 실행 명령어 + .bat 이렇게 적어주면 된다.

@echo off
set JAVA_HOME={JDK 경로}
set Path=%JAVA_HOME%\bin;%Path%
echo Java 11 activated.

그럼 scripts 폴더에 파일이 생성된다.

java11.bat 파일

 

 

그리고 cmd 창에서 자바 버전을 변경해보았다.

처음에 zulu로 설정되어 있는데 java11 이라고 입력하고 다시 java -version을 입력해보니까 java11.bat 파일에 적어둔 JAVA_HOME 경로인 아까 다운 받은 openjdk 버전으로 변경된다. 이런식으로 앞으로 필요할 때 버전을 변경해서 사용하면 될 것 같다.