inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Trong thực tế! Phát triển ứng dụng quản lý thư viện với Kotlin và Spring Boot (tái cấu trúc dự án Java)

Bài học 12. Thay đổi lớp miền thành Kotlin - Book.java

12강에서 영상과 다른 오류가 발생합니다.

304

doll

2 câu hỏi đã được viết

1

bookRepository.save(Book("이상한 나라의 엘리스"))
해당 코드에서 오류가 발생하는데요

java.lang.NoSuchMethodError: 'void com.group.libraryapp.domain.book.Book.<init>(java.lang.String)'
이런 메세지가 뜨면서 동작을 안하네요.

init 메서드 관련해서 이슈가 있어 보이는데 감이 안오네요...

spring-boot spring kotlin java refactoring

Câu trả lời 2

1

doll

다시 빌드 후 실행하니깐 정상적으로 동작하네요

답변 감사합니다!

0

lannstark

오~ 다행입니다 ㅎㅎㅎㅎ 언제든지 어려운 점 있으시면 편하게 질문 주세요~!!!

감사합니다!!!

0

lannstark

안녕하세요 프로그램님!!! 

java.lang.NoSuchMethodError: 'void com.group.libraryapp.domain.book.Book.<init>(java.lang.String)' 이라는 에러가 나오는군요 😭

12강에서 나셨다면 현재 도메인 객체인 Book만 코틀린으로 바뀐 상황인 것으로 추측됩니다!!

 

우선 예상되는 해결책은 다음과 같습니다!!

1. jpa 플러그인이 잘 적용되어 있는지 확인한다 

// build.gradle
plugins {
  id "org.jetbrains.kotlin.plugin.jpa" version "1.6.21"
}

 

2. reflect 의존성이 잘 적용되어 있는지 확인한다

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-reflect:1.6.21")
}

 

3. 혹시나 Book.kt가 아래 코드와 다른 점이 있는지 확인한다 <--- 아마 이 확률이 제일 높을 것 같습니다!! 그 이유는 아래서 설명드리겠습니다!

 

제가 3번의 확률이 제일 높을 것 같다고 생각하는 이유는, 해당 에러가 Book 클래스의 '기본 생성자'가 없을 때 나는 에러라는 검색 결과가 있기 때문입니다!!

(제 블로그는 아니지만 관련 blog를 찾았어요! https://soobindeveloper8.tistory.com/244)

 

조금 더 정확히는 현재 에러에서 <init>(java.lang.String) 이라고 되어 있는데요! 이는 아마 Book 클래스의 생성사 중에 String만을 가지는 생성자가 없다는 의미 같습니다!

즉, java로 치면 new Book(String name) 라고 타이핑 할 수 없다는 것이죠!

 

그리고 적어주신 bookRepository.save(Book("이상한 나라의 엘리스"))는 문법을 보았을 때 Kotlin 문법을 사용하신 것으로 추정됩니다!! (즉 테스트 코드인 것 같아요!!)

여기서 import 하고 있는 Book이 정말 Kotlin Class Book인지, 그렇다면 그 Kotiln Class Book의 생성자 중에 default parameter 등을 사용해 String만을 가질 수 있는 생성자가 있는지 확인해보시면 더욱 좋을 것 같습니다~!

이때 Book.kt 파일을 Java로 Decompile 해보시면 생성자를 조금 더 자세히 확인하실 수 있을 겁니다! 고생 너무너무 많으십니다!! 👍👍

 

질문 주셔서 감사합니다 ㅎㅎㅎㅎ 꼭 해결 되었으면 좋겠네요~!! 🔥

 

혹시나 계속해서 진행이 어려우시다면, 번거로우시겠지만 관련 코드를 스샷해주시거나 프로젝트 전체를 압축해주시면 제가 한 번 확인해보도록 하겠습니다!!!

 

감사합니다! 좋은 밤 되세요!!! 🙏🙇

안녕하세요 혹시 프론트 코드 제공받을 수 있을까요?

0

68

2

실행이 안되네요

0

66

2

프론트 영역 보는법

0

51

2

companion object

0

78

2

Custom 레프직토리 형식

0

57

2

Querydsl 도입

0

67

2

fetch join DISTINCT 중복제거

1

83

2

표준 예외와 커스텀 예외 사용 전략 질문

0

86

3

이 질문이 왜 없는지 이해가 안 되지만 문제 인식 및 해결 방법 남깁니다.

1

177

2

테스트를 위한 코드

1

105

2

프로젝트 실행 에러

0

151

2

PDF 문서에 오타가 있어서 알려드립니다.

1

102

1

enum질문

1

86

1

테스트 후 AfterEach 함수에서 나오는 쿼리

0

136

2

테스트 fixture

1

210

2

./gradlew test 실행시 인식할수 없다고 뜹니다.

0

141

1

test 코드 실행시 경고가 발생합니다.

0

140

1

13강 User Kotlin 변환중

2

169

3

'추가 - 코프링과 플러그인' 강의 7:46 allopen 관련 질문

2

174

1

-

0

141

2

4:28 build.gradle 수정 시 kotlin-reflect관련 implementation 추가 해야할까요?

0

312

3

junit import 불가

0

273

3

테스트 코드와 관련하여 질문이 있습니다.

1

218

1

hibernate가 select를 두번 하는 이유

0

240

1