-
이클립스로 스프링부트 프로젝트 시작하는 법(Spring Initializr) - Gradle 에러 디버깅Spring Framework 2021. 12. 26. 20:26
이전 시간에는 스프링 프레임워크에 대해 알아보았고 이제 실제로 스프링 부트 프로젝트를 시작해 보겠습니다.
시작 환경
Java16 버전과 Eclipse가 설치되어 있는 환경에서 시작하겠습니다.
스프링 프로젝트를 하기 위해서 많은 설정이 필요하지만 스프링 부트를 사용한다면 편리하게 할 수 있습니다.
스프링 부트 스타터 사이트를 통해 스프링 프로젝트 생성
아래의 링크를 클릭하여 사이트로 이동하시면 됩니다
아래의 UI는 시간에 따라 변화할 수도 있습니다.
1. Project를 선택합니다.
Maven Project와 Gradle Project가 있습니다. (Gradle로 선택하겠습니다.)
이 둘은 빌드 도구로 프로젝트에 필요한 의존성을 관리하고 빌드 라이프사이클을 관리해줍니다.
과거에는 Maven을 많이 사용하였지만 최근에는 Gradle을 사용하는 추세입니다.
아래의 글을 보시면 빌드와 빌드 도구 그리고 Maven과 Gradle에 대한 간략한 설명이 있습니다.
https://junuuu.tistory.com/20?category=968252
2. Language를 선택합니다.
Java를 선택하겠습니다.
3.Spring Boot 버전을 선택합니다.
SNAPSHOT이란 아직 만들고 있는 버전을 의미하기 때문에 정식으로 배포된 2.6.2를 선택하겠습니다.
여기에는 없지만 M이 붙어있는 것은 정식으로 배포되지 않은 버전입니다.
4. Project Metadata를 입력합니다.
Group에는 보통 기업명의 도메인명을 적습니다. (저는 hello라고 적겠습니다.)
Artifact는 빌드의 결과물의 이름(프로젝트명)입니다. (hello-spring이라고 적겠습니다.) -
그러면 Name(이름)은 자동으로 hello-spring이 되며
Description은 프로젝트 설명으로 건들지 않겠습니다.
Package name도 패키지 이름에 대한 부분으로 건들지 않겠습니다.
Packaging은 배포 형태를 의미합니다.
마지막에 Java 17, 11, 8 부분은 자바 버전 선택에 대한 부분입니다.
JDK 16을 쓰고 있어서 낮은 버전과 호환이 될 것 같아 11 버전을 선택했습니다.
Jar vs War
Jar
자바로 만든 애플리케이션의 구성요소들을 압축시켜놓은 파일이며 내장 Tomcat을 이용하기 때문에 자바 환경 위에서 간단하게 실행이 가능합니다.
War
마찬가지로 자바로 만든 애플리케이션 구성요소들을 압축시킨 파일이지만 JSP나 Servlet 등 WAS 컨테이너 위에서 동작하게끔 빌드된 형태입니다.
5. Dependencies
어떤 라이브러리를 사용할지에 대한 선택입니다.
Web 프로젝트를 위한 Spring Web
HTML을 만드는 템플릿 엔진 Thymeleaf
2가지를 추가하겠습니다.
아래는 Dependencies가 추가된 모습입니다.
6. Generate
사이트 하단에 위치한 GENERATE 버튼을 눌러 hello-spring.zip 파일을 다운로드합니다.
7. 압축한 파일을 Eclipse에 Import
이클립스 좌측 상단에서 File -> Open Projects from File System을 클릭하면 아래와 같은 창이 나타납니다.
Directory 버튼을 클릭하여 다운로드하였던 hello-spring 폴더를 선택하고 Finish 버튼을 클릭합니다.
좌측의 탐색기에는 프로젝트가 등록된 모습이나 에러가 발생하였습니다
"The import org.springframework cannot be resolved"라는 에러가 나타났으며 구글링 결과 해당 라이브러리를 찾기 못하는 에러라고 합니다.
저는 이전에 Maven을 사용하였고 현재는 Gradle을 사용하여 의존성 관리를 하는 프로젝트이기 때문에 Gradle을 설치해야 합니다.
이클립스 좌측 상단의 File -> Import -> Gradle -> Existing Gradle Project를 클릭합니다.
이후 Next를 눌러주시고 아래와 같은 창이 나타나면 저희가 다운로드한 경로를 사용하면 됩니다.
이후에 계속 Next를 눌러서 설치를 완료해주시면 됩니다. (5분 내로 설치가 완료됐습니다)
만약 추가적인 에러가 나오지 않으시면 여기서 구분선 까지는 무시하시고 넘어가시면 됩니다!
기존에는 문제없이 잘 됬으나 새로운 프로젝트를 추가해봤는데 다음과 같은 오류가 발생했습니다.
만약에 다음과 같은 에러가 발생할 수도 있습니다.
General error during semantic analysis: Unsupported class file major version 60
현재 JDK환경이 16에서 사용하고 있으며 프로젝트의 버전은 11으로 받아왔습니다.
major version 60은 java 16으로 작성된 .class 파일의 버전이므로 에러가 발생합니다.
따라서 JDK 11에 대한 설정을 해주어야 합니다.
하지만 JRE System Library 우클릭 -> Properties -> Executio nenvironment 를 Java 11버전으로 설정해주어도 동일한 오류가 발생합니다.
이 경우에는 혹시 압축을 해제할 때 폴더안에 폴더가 들어갔는지 확인해보세요.. 그런 경우에도 동일한 에러가 발생합니다.
이때는 프로젝트를 등록하고 바로 Import Gradle Project를 하지 않고 Java 11버전으로 먼저 설정한 뒤 Import Gradle Project를 하니 정상적으로 import 되었습니다.
2022-03-03 15:24:21.768 INFO 38304 --- [ main] springbasic.core.CoreApplication : Starting CoreApplication using Java 16.0.2 on DESKTOP-IR8C1RH with PID 38304 (C:\Users\babab\Desktop\core\bin\main started by babab in C:\Users\babab\Desktop\core)
이제 실행해보았는데 실패한것 같습니다. (localhost:8080에 습관적으로 접속했지만 접속되지 않습니다)
INFO를 읽어보면 Java 16이 PID 38304를 사용중인거 같습니다.
실패한지 알았는데 Spring Web 등의 의존성을 추가하지 않았기 때문에 이대로 종료되는것이 올바른 것입니다.
즉, localhost:8080 이 존재하지 않는것이 정상이며 성공적으로 프로젝트가 import 되었습니다!
에러가 사라졌으며 실행결과 잘 되는 것 같습니다!
하지만 자세히 읽어보니
8080 포트가 이미 사용중이여서 실행이 실패되었습니다 라고 나옵니다.
저는 Window를 사용하고 있으니 CMD창으로 가서 netstat -ano | findstr 8080 명령어로 현재 8080 포트를 사용하는 네트워크 정보를 출력하고 위의 정보로 process_id를 알아낸뒤 강제로 종료시킵니다.
HelloSpringApplication.java를 실행시켜보니 이제는 에러가 나타나지 않습니다
이제 localhost:8080에 접속하여 아래와 같은 글이 보이신다면 성공적으로 끝이 났습니다.
출처
https://blog.naver.com/whdgml1996/221938516145
https://yeonyeon.tistory.com/67
https://kku-jun.tistory.com/12
https://7942yongdae.tistory.com/35
'Spring Framework' 카테고리의 다른 글
스프링부트 Welcome Page 만들기(스프링부트 hello 출력하는 페이지 만들기) (0) 2021.12.31 build.gradle 파일 분석 (0) 2021.12.29 Spring Framework 특징 (0) 2021.12.21 Spring과 Spring Boot (0) 2021.12.18 Spring Framework의 유래 (0) 2021.11.19