
<자주 사용하는 스타터>
- spring-boot-starter-web : Spring MVC를 사용해서 RESTful 웹 서비스를 개발할 때 필요한 의존성 모음
- spring-boot-starter-test : 스프링 애플리케이션을 테스트하기 위해 필요한 의존성 모음
- spring-boot-starter-validation : 유효성 검사를 위해 필요한 의존성 모음
- spring-boot-starter-actuator : 모니터링을 위해 애플리케이션을 제공하는 다양한 정보를 제공하기 쉽게 하는 의존성 모음
- spring-boot-starter-data-jpa : ORM을 사용하기 위한 인터페이스 모음인 JPA를 더 쉽게 사용하기 위한 의존성 모음
Error: Could not find or load main class me.nahyung.springbootdeveloper.SpringBootDeveloperApplication
Caused by: java.lang.ClassNotFoundException: me.nahyung.springbootdeveloper.SpringBootDeveloperApplication
라고 떴다. Process finished 라고는 떴지만, 에러가 떴다.
캐쉬도 삭제해보고, project를 새로 만들어보기도 했지만, 같은 문제가 지속되었다.
gradle -> dependencies를 보니 build.gradle에 설정한 의존성이 적용되지 않은 것 같아서, 이것 저것 찾아보았다. 그러던 중
[File → Project Structure → Project]
를 들어가보니

위처럼 되어 있었다.
뭐가 문제냐 하면, src 디렉토리가 인텔리제이에서 소스 루트로 인식을 해야하는데, 일반 폴더로 인식하여 클래스 파일을 찾지 못하는 것이였다.

따라서 다음과 같이 source를 누르고,
./gradlew clean build 명령어를 통해 다시 빌드 시켜주었더니
드디어 인텔리제이에서 소스폴더로 인식하고 클래스도 찾을 수 있게 되었다.
"그러나"
개발 인생이 그렇듯, 아직. 해결되지 않았다.
당연히 이 정도 했으면, 해결되었을 줄 알았으나 해결되지 않아 멘붕이였다.
차근차근 다시 찾아보니
[Run -> Edit Configurations...]에서 내가 실행하고 싶은 main을 다시 추가해주어야 했다.

원래는 아래 경로가 없었어서, +를 눌러 내 프로젝트 모듈을 추가해주었다.
"또"
안됐다.
이젠 정말 할 수 있는 것은 다 한 것 같은데
시간도 너무 아까웠다.. 그러나 내가 인텔리제이, spring을 쓰면서 다시는 이러지 않는다는 자신이 없어서 시간이 아까워도 해결하기로 했다..
이것저것 확인해보았을 때, 빌드된 클래스 파일이
build/classes/java/main/me/nahyung/springbootdeveloper/SpringBootDeveloperApplication.class
에 존재했고, 이는 소스-컴파일 자체는 정상적으로 보았다.
그래서 인텔리제이가 실행할 때 잘못된 빌드 아웃풋을 참조하고 있을 것 같아서
./gradlew bootRun
코드를 실행해보기로 했다.
spring 공식문서: Gradle로 애플리케이션 실행
평소에는 스프링 이니셜라이저를 사용했었기 때문에, 아예 인텔리제이에서 new project하여 새 파일로 프로젝트를 만들었을 때 이러한 문제가 생길 수 있다는 것을 알게 되었다.
책에 있는 초기설정을 하니 오류가 많이 생겨
스프링 이니셜라이저를 사용하기로 했다.
해당 글은 다음 도서의 내용을 정리하고 참고한 글임을 밝힙니다.
신선영, ⌜스프링 부트 3 벡엔드 개발자 되기 - 자바 편⌟, 골든래빗(주), 2023, 384쪽