soft IT life
spring boot 빌드 & 컴파일 순서에 대해서 본문
(spring boot 빌드 & 컴파일 순서에 대해서 공부해볼 것 !)
특정 데이터의 타입을 수정하고 새로 빌드를 하였더니 빌드 단계에서 type mismatch 에러가 계속 발생하였다.
type mismatch: inferred type is string? but string was expected
문제 발생 지점.
override fun editActivity(data: Activity) {
record.description = data.description
}
대입하려는 주소의 값도 모두 Nullable 하게 선언해두었는데도 계속 에러가 발생했다.
Nullable한 데이터를 Nonull 타입에 대입하려고 한다고 에러를 뱉어 냈고 몇시간 동안 무슨 문제일까 고민했다.
도대체 왜 ! nullable로 선언하고 IDE 내에서도 String?로 인식하고 있던 것을 빌드시에 error가 발생하는 건지...
문제에 대한 정확한 파악은 하지 못했지만 결국은 해결이 되긴 했다. 방법은 아래와 같다.
문제가 되는 코드를 주석처리하고 빌드를 실행했다. 그랬더니 빌드가 정상적으로 올라갔다.
그리고는 주석을 다시 제거를 하고(이외에 건든 코드는 단 1도 없음) 다시 빌드 했더니 정상적으로 또 빌드가 올라갔다.
무엇이 문제일까 ...
개인적인 생각으로는 아마도 String을 nullable하게 수정하기 전에 빌드해두었던 cach 데이터들이 또 다시 읽혀오면서, 코드상에는 String?으로 되어 있지만 기존 빌드인 String이라고 판단하여 두 값을 비교해 Error가 발생한 것은 아닌가 하고 생각해보았다.
웃긴것은 빌드 cach도 다 삭제한 뒤 restart하고 실행하였을때도 빌드 오류가 발생했었던 점이다.
아무튼 해결이 되긴 했는데 ... 무엇이 문제였는지 정확히 파악하기 위해서는 Spring boot의 빌드와 컴파일 순서를 정확하게 이해 해야할 것 같다.
'Errors' 카테고리의 다른 글
[Kotlin] ?: 과 ?=의 차이 (0) | 2024.09.24 |
---|---|
kotlin+springboot 환경에서 @Valid 적용 되지 않는 이슈 (0) | 2024.04.09 |
Intellij 비정상 종료 시 프로세스가 살아 있는 이슈 (0) | 2024.01.17 |