인프런 커뮤니티 질문&답변
repository 위치
해결된 질문
작성
·
282
·
수정됨
1
안녕하세요 :) 강사님
26강(JPA 이용하여 구현) 강의를 듣던 중 UserRepository 인터페이스 파일을
강사님과 동일하게 Domain -> User 와 같은 위치에 만들고 실행시켰더니
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2023-09-11 22:14:55.016 ERROR 58408 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService': Resolution of declared constructors on bean Class [com.group.libraryapp.service.user.UserService] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc] failed; nested exception is java.lang.NoClassDefFoundError: com/group/libraryapp/repository/user/UserRepository
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:309) ~[spring-beans-5.3.24.jar:5.3.24]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1302) ~[spring-beans-5.3.24.jar:5.3.24]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1219) ~[spring-beans-5.3.24.jar:5.3.24]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.24.jar:5.3.24]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.24.jar:5.3.24]위와같은 에러가 나서 구글링과 이것저것 찾아보다가

repository 폴더 안으로 옮겼더니 정상적으로 실행이 되었습니다 :)
영상에서는 domain 클래스에 넣고 실행했을 때 정상적으로 작동이 되었는데
제 경로에서는 어떤 이유에서 에러가 발생했던건지, 정확한 답변을 찾을 수가 없어서 문의드립니다! :)
(+ bookRepository는 Book 도메인과 같이 넣어도 정상적으로 실행이 됩니다! )
답변 1
0
안녕하세요, sol님! 질문 주셔서 감사드립니다~~ 😊
아하~~ 어떤 이유에서 에러가 나왔는지 궁금하셨군요!! 최대한 제가 알고 있는 내용을 전달 드려 보겠습니다~!!
먼저 보내주신 내용에서 파악할 수 있는 것은 NoClassDefFoundError: com/group/libraryapp/repository/user/UserRepository 라는 문구를 통해, 해당 에러는 UserRepository라는 클래스를 찾지 못해 발생했다는 것을 알 수 있습니다.
보통 에러의 stack trace 가 발생하면 아래로 갈 수록 근본 원인이 나오게 되는데요, 이 경우도
1차 에러 : Error creating bean with name 'userService'
-> UserService를 스프링 빈으로 생성하는 것에 실패!
2차 에러 : NoClassDefFoundError: com/group/libraryapp/repository/user/UserRepository
-> UserService에서 사용하는 UserRepository를 찾을 수 없어 실패!
순서로 아래 부분이 더 근본원인이라 할 수 있습니다.
그렇다면, "왜 UserRepository를 찾을 수 없다고 했는가" 가 중요한 쟁점일 될텐데요!
추측하기로는.. UserRepository를 domain 패키지로 옮기신 이후
import구문이 정상적으로domain패키지를 반영하지 않았거나다시 실행 시킬 때는 이전에 빌드 했던 결과물과 현재 코드가 섞이면서 클래스 로딩에 혼선이 있었거나
정도의 이유를 생각해볼 수 있을 것 같습니다!
만약 재실행 이전에 깨끗한 상태로 스프링 서버를 동작시키고 싶으시다면,

IntelliJ 오른쪽 gradle 탭에서 clean을 사용해보실 수 있습니다!
궁금증이 해소되셨으면 좋겠습니다! 감사합니다. 🙏






너무 쉽게 잘 설명해주셔서 감사합니다! :)
말씀해주신 답변 읽어보고 어떻게 오류 사항에 대해 생각해내야되는지도 대략적으로
감이 잡히는거 같아요!ㅎㅎㅎ 빠른 답변 감사드립니다!