安卓 - Kotlin - 找不到符号DataBindingComponent

12

我遇到了这种幽灵错误。我已经尝试了很多方法来解决这个问题,但是都没有用。我不知道是什么导致了这个问题。这是我的构建日志中的错误:

e: /Users/galihlarasprakoso/Projects/Android/surat-kaleng/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/galihlprakoso/com/SuratKaleng/databinding/ActivityLoginBinding.java:17: error: cannot find symbol
    protected ActivityLoginBinding(DataBindingComponent _bindingComponent, View _root,
                                    ^
    symbol:   class DataBindingComponent
    location: class ActivityLoginBinding
e: /Users/galihlarasprakoso/Projects/Android/surat-kaleng/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/galihlprakoso/com/SuratKaleng/databinding/ActivityLoginBinding.java:31: error: cannot find symbol
        @Nullable ViewGroup root, boolean attachToRoot, @Nullable DataBindingComponent component) {
                                                                ^
    symbol:   class DataBindingComponent
    location: class ActivityLoginBinding
e: /Users/galihlarasprakoso/Projects/Android/surat-kaleng/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/galihlprakoso/com/SuratKaleng/databinding/ActivityLoginBinding.java:42: error: cannot find symbol
        @Nullable DataBindingComponent component) {
                ^
    symbol:   class DataBindingComponent
    location: class ActivityLoginBinding
e: /Users/galihlarasprakoso/Projects/Android/surat-kaleng/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/galihlprakoso/com/SuratKaleng/databinding/ActivityLoginBinding.java:51: error: cannot find symbol
        @Nullable DataBindingComponent component) {
                ^
    symbol:   class DataBindingComponent
    location: class ActivityLoginBinding
e: [kapt] An exception occurred: java.lang.IllegalArgumentException: couldn't make a guess for galihlprakoso.com.SuratKaleng.databinding.ActivityLoginBindingImpl

这是我的项目级别的build.gradle.kts文件:
buildscript {
    ext.kotlin_version = '1.2.71'
    ext.dagger_version = '2.16'
    ext.glide_version = '4.8.0'
    ext.retrofit_version = '2.4.0'
    ext.rxandroid_version = '2.1.0'
    ext.rxjava_version = '2.2.2'
    ext.support_version = '28.0.0'

    repositories {
        google()
        jcenter()
        maven { url "https://dl.bintray.com/drummer-aidan/maven/" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'
        classpath 'com.google.gms:google-services:4.0.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

这是我的应用级别的build.gradle.kts文件:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-kapt'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "galihlprakoso.com.SuratKaleng"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    dataBinding {
        enabled = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

configurations.all {
    resolutionStrategy {
        eachDependency { DependencyResolveDetails details ->
            if (details.requested.group == 'com.android.support') {
                details.useVersion "$support_version"
            }
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    //noinspection GradleCompatible
    implementation "com.android.support:appcompat-v7:$support_version"
    implementation "com.android.support:design:$support_version"

    //Dagger
    implementation "com.google.dagger:dagger:$dagger_version"
    implementation "com.google.dagger:dagger-android:$dagger_version"
    implementation "com.google.dagger:dagger-android-support:$dagger_version"
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    kapt "com.google.dagger:dagger-compiler:$dagger_version"
    kapt "com.google.dagger:dagger-android-processor:$dagger_version"

    //Glide
    implementation "com.github.bumptech.glide:glide:$glide_version"
    kapt "com.github.bumptech.glide:compiler:$glide_version"

    //Retrofit
    implementation "com.squareup.retrofit2:retrofit:$retrofit_version"

    //RXJava
    implementation "io.reactivex.rxjava2:rxandroid:$rxandroid_version"
    implementation "io.reactivex.rxjava2:rxjava:$rxjava_version"

    //Material Dialog
    implementation 'com.afollestad.material-dialogs:core:2.0.0-beta2'

    //Firebase
    implementation 'com.google.firebase:firebase-core:16.0.3'

    //Firebase Auth
    implementation 'com.firebaseui:firebase-ui-auth:4.1.0'


    configurations {
        all*.exclude group: 'com.android.support', module: 'versionedparcelable'
    }

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

}

apply plugin: 'com.google.gms.google-services'

我不知道出了什么问题,但是当我尝试通过binding.name_of_variable访问我在xml中创建的变量时,它显示:无法访问类check,你的模块classpath缺少或存在冲突依赖项


你尝试过重建项目吗? - Jeel Vankhede
当然。我已经尝试过了。 - Galih laras prakoso
2
请展示您的LoginActivity,因为其中有一些组件无法编译(请提供代码和xml文件)。 - Sam
你在这个问题上找到了解决方法吗? - jayellos
这看起来像是您的语法错误或缺少某个定义(可能是您的布局文件),导致您的数据绑定类无法编译。通常,您可以在堆栈跟踪的顶部找到错误。或者,您应该确定在哪个更改之后开始出现此问题 - 也许是创建新的布局文件之后?或者它可能是新的依赖注入 - 然后检查该文件是否存在错误。 - Bjelis
1
我尝试了许多方法,但最终通过使用确切的gradle版本解决了问题。尝试使缓存无效并重新启动,清理并重新构建,然后突然就解决了。不知道这个问题的确切解决方案。感谢所有人的回复。 - Galih laras prakoso
2个回答

1
尝试在Android Studio中使用“无效缓存/重启”功能。
选择并点击“文件->无效缓存/重启”。 enter image description here 这将重新生成所需的内容。

0

您需要重新生成已生成的类。在Android Studio中执行此操作:Build->Clean Project,然后Build->Rebuild Project或直接运行项目。在终端(位于项目根目录下)中执行以下命令:./gradlew clean && ./gradlew build


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接