티스토리 뷰
Develop/Android
[Android] 데이터바인딩 사용 중 Execution failed for task ':app:kaptDebugKotlin'.> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction > java.lang.reflect.InvocationTargetExcep..
노이지 2021. 11. 2. 13:39반응형
프로젝트에 데이터바인딩을 적용 후 다음과 같은 에러가 발생했다.
Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction
> java.lang.reflect.InvocationTargetException (no error message)
처음에는 gradle 문제인 줄 알고 gradle을 이것저것 바꿔보고, 구글링 해보니 room 문제라는 말도 있어서 room 파일들도 다시 한 번 살펴봤는데 오류가 해결되지 않았다. 그러다가 오류를 더 자세하게 확인해 아래 오류 메시지를 보고 데이터바인딩 문제라는 것을 알게 되었다.
^error: cannot generate view binders java.lang.ClassCastException: class android.databinding.tool.expr.IdentifierExpr cannot be cast to class android.databinding.tool.expr.StaticIdentifierExpr (android.databinding.tool.expr.IdentifierExpr and android.databinding.tool.expr.StaticIdentifierExpr are in unnamed module of loader java.net.URLClassLoader @1e459626)
at android.databinding.tool.expr.ExprModel.staticIdentifier(ExprModel.java:212)
at android.databinding.tool.expr.ExprModel.addImport(ExprModel.java:374)
at android.databinding.tool.expr.ExprModel.staticIdentifierFor(ExprModel.java:284)
at android.databinding.tool.expr.FieldAccessExpr.replaceStaticIdentifier(FieldAccessExpr.java:313)
at android.databinding.tool.expr.FieldAccessExpr.resolveType(FieldAccessExpr.java:298)
at android.databinding.tool.expr.Expr.lambda$getResolvedType$0(Expr.java:378)
at android.databinding.tool.reflection.RecursiveResolutionStack.visit(RecursiveTraversal.kt:86)
at android.databinding.tool.expr.Expr.getResolvedType(Expr.java:371)
at android.databinding.tool.expr.Expr.unwrapChildTo(Expr.java:931)
at android.databinding.tool.expr.Expr.unwrapObservableFieldChildren(Expr.java:908)
at android.databinding.tool.expr.Expr.lambda$getResolvedType$0(Expr.java:375)
at android.databinding.tool.reflection.RecursiveResolutionStack.visit(RecursiveTraversal.kt:86)
at android.databinding.tool.expr.Expr.getResolvedType(Expr.java:371)
at android.databinding.tool.BindingTarget.resolveMultiSetters(BindingTarget.java:214)
at android.databinding.tool.LayoutBinder.<init>(LayoutBinder.java:154)
at android.databinding.tool.DataBinder.<init>(DataBinder.java:61)
at android.databinding.tool.CompilerChef.ensureDataBinder(CompilerChef.java:118)
at android.databinding.tool.CompilerChef.sealModels(CompilerChef.java:370)
at android.databinding.annotationprocessor.ProcessExpressions.writeResourceBundle(ProcessExpressions.java:244)
at android.databinding.annotationprocessor.ProcessExpressions.onHandleStep(ProcessExpressions.java:126)
at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.runStep(ProcessDataBinding.java:246)
at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.access$000(ProcessDataBinding.java:231)
at android.databinding.annotationprocessor.ProcessDataBinding.doProcess(ProcessDataBinding.java:112)
at android.databinding.annotationprocessor.ProcessDataBinding.process(ProcessDataBinding.java:87)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.process(incrementalProcessors.kt:90)
at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.process(annotationProcessing.kt:166)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:980)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:896)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1222)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1335)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1258)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:81)
at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:31)
at org.jetbrains.kotlin.kapt3.base.Kapt.kapt(Kapt.kt:45)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.jetbrains.kotlin.gradle.internal.KaptExecution.run(KaptWithoutKotlincTask.kt:227)
at org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction.execute(KaptWithoutKotlincTask.kt:193)
데이터바인딩의 어느 부분이 문제인가 했더니, xml에 잘못된 type을 변수로 사용해서 생긴 문제였다. (참고)
<data>
<variable
name="view"
type="android.view.View" />
</data>
데이터에 따라 textView의 visibility를 설정해주기 위해 view를 사용했는데 이 경우에는 view를 variable로 사용하는 게 아니라 import해야 하는 거였다.
<data>
<import type="android.view.View" />
</data>
위와 같이 수정해서 문제를 해결했다.
반응형
'Develop > Android' 카테고리의 다른 글
[Android] java.lang.IllegalArgumentException: No view found for id for fragment (0) | 2021.11.01 |
---|---|
[Android] 에뮬레이터에서 Toast 메시지가 안 보일 때 해결 방법 (0) | 2021.10.07 |
[Android] Clean Architecture (0) | 2021.09.27 |
[Android] ViewModel(AAC) (0) | 2021.09.11 |
[Android] LiveData(라이브 데이터) (0) | 2021.09.11 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- java
- 변수
- Android
- 자바
- 뷰모델
- programmers
- 후기
- MutableLiveData
- Kotlin
- 라이브 데이터
- 알고리즘
- SCPC2021
- 우선순위큐
- 안드로이드
- gradle
- 코틀린
- hilt
- 프로그래머스
- 아키텍처 패턴
- 백준
- error
- BAEKJOON ONLINE JUDGE
- viewmodel
- Naver AI Burning Day
- Algorithm
- 힙
- heap
- architectural pattern
- androidx.core
- livedata
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함