inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

회원 등록 API

ClassNotFoundException, NoClassDefFoundError오류

158

작성자 없음

작성한 질문수 0

0

[질문 내용]

스프링 부트와 JPA 활용 1편에서 제가 작성한 코드에서는

POST: http://localhost:8080/api/v1/members

해당 API가 잘 작동하는데 스프링 부트와 JPA 활용 2편에서 제공하신 강의 소스에서는 작동이 안되어서 문의드립니다.


해당 사진처럼 오류가 발생(상태코드 500)

image.pngimage.png

 

 

아래 링크에 있는 내용대로 패키지 이름 변경은 다 했습니다. (javax -> jakarta)

https://docs.google.com/document/d/1j0jcJ9EoXMGzwAA2H0b9TOvRtpwlxI5Dtn3sRtuXQas/edit?tab=t.0#heading=h.vfy9wirpglmx

image.pngimage.pngimage.png

 

java spring spring-boot jpa

답변 2

0

OMG

안녕하세요. 항상배고픔님, 공식 서포터즈 OMG입니다. AI인턴 답변에 남겨주신 댓글에 대한 추가 답변 드립니다.

섹션3. API 개발 고급 - 지연 로딩과 조회 성능 최적화.pdf를 참고해주세요 😀

image.png

 

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 항상배고픔님께서 말씀하신 Exception in thread "main" java.lang.NoClassDefFoundError 문제는 주로 라이브러리가 누락되거나 패키지 변경 때문에 발생할 수 있습니다. 특히, Spring Boot 3로 전환하면서 javax 패키지가 jakarta로 변경됨에 따라 이러한 에러가 발생할 수 있습니다.

이 문제를 해결하기 위해 다음 사항을 확인해 보세요:

  1. 의존성 확인: build.gradle 혹은 pom.xml 파일에서 다음과 같은 jakarta 관련 의존성이 추가되어 있는지 확인하세요.

    implementation 'jakarta.persistence:jakarta.persistence-api:3.1.0'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    
  2. 패키지 수정: 현재 코드를 javax.persistence에서 jakarta.persistence로 변경해야 합니다. 전체 프로젝트 내에서 이러한 변경이 일관되게 이루어졌는지 확인하세요. 이미 수행하셨다고 하셨지만, 특정 부분에서 누락이 있을 수 있으니 다시 한 번 전역 검색으로 검토하시는 것이 좋습니다.

  3. Gremlins 체크: 프로젝트에서 javax.persistence.Transient와 같은 사용되지 않는 임포트가 있는지, 불필요한 코드가 남아 있는지 확인해 보세요.

  4. 라이브러리 버전 호환성 확인: 사용 중인 다른 라이브러리와 jakarta 패키지 호환성이 있는지 확인합니다. 특히, Hibernate나 기타 ORM 도구도 버전 호환성을 맞춰야 합니다.

유사한 문제를 가진 다른 인프런 사용자들이 문제를 해결했던 쇼케이스를 참고하실 수 있습니다:
- NoClassDefFoundError 관련 질문드립니다
- 스프링 부트 3.0에서 해결 방법에 대한 사용자들의 피드백

해당 링크들은 NoClassDefFoundError에 대해 보다 구체적인 해결책을 제시하고 있으며, 다른 사용자들이 겪고 있는 유사한 문제와 그 해결 방법을 제공하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

항상배고픔

// https://mvnrepository.com/artifact/com.fasterxml.jackson.datatype/jackson-datatype-hibernate6
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-hibernate6:2.17.2'

hibernate5 -> hibernate6으로 변경 후

@Bean
Hibernate6Module hibernate6Module() {
    Hibernate6Module hibernate6Module = new Hibernate6Module();
    //강제 지연 로딩 설정
    hibernate6Module.configure(Hibernate6Module.Feature.FORCE_LAZY_LOADING, true);
    return hibernate6Module;
}

으로 hibervateModule 빈을 변경해서 해결했습니다.

추가적으로 스프링 부트 3.0에서 해결방안은 강의자료에 업데이트 해두었습니다 라고 영한님이 말씀해주셨는데 강의 자료에 보이지 않아서 혹시 알려주실 수 있으신가요??

강의 관련 외 질문입니다.

0

80

2

SpringBoot4 + Hibernate7 모듈 등록 방법 공유

1

97

1

BeanCreationException

0

96

3

Update 후 UpdateMemberResponse 매핑할 때

0

56

1

트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?

0

102

2

페이징 + 검색조건 관련해서 질문드립니다.

0

74

1

Query Dsl Q파일 질문입니다.

0

86

1

루트 쿼리라는것은

0

62

1

메서드를 분리하는 기준

0

70

1

findAllWithMemberDelivery 메서드 질문드립니다.

0

116

3

연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략

0

92

2

fetch join과 영속화와 OSIV의 관계

0

90

2

Distinct 사용 전 결과에 대한 의문

0

118

2

레포지토리 계층에서의 트랜잭션에 대한 의문

0

62

1

영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.

0

79

2

dto 필드 속 엔티티 여부

0

63

1

뷰템플릿 사용 시

0

82

2

Result 클래스 관련 질문

0

56

1

@PostConstruct 프록시 관련 질문드립니다

0

88

1

DTO 대신 Form 사용은 안되나요?

0

140

1

OSIV ON 상태일 때

0

99

1

fetch join VS fetch join 페이징 궁금증

0

189

2

양방향 연관관계 알아보는 법?

0

109

1

16강 17강 간단 정리 이게 맞을까요 ?

0

168

2