java.lang.NoClassDefFoundError:dagger.internal.Preconditions android dagger2

时间:2018-08-02 11:01:28

标签: android dagger-2 dagger

我正在使用构建风格在两个项目之间切换。我正在使用dagger2,并且一个项目运行正常,但是在切换另一个项目并尝试运行它时,显示以下错误:

java.lang.NoClassDefFoundError: dagger.internal.Preconditions
at common.di.DaggerAppComponent$Builder.appModule(DaggerAppComponent.java:35)

这是我的gradle依赖项:

// Dependency Injection
    annotationProcessor 'com.google.dagger:dagger-compiler:2.14.1'
    implementation 'com.google.dagger:dagger:2.14.1'
    compileOnly 'javax.annotation:jsr250-api:1.0'

问题主要是在AppComponent中添加appModule时出现的。

private AppComponent createAppComponent() {

    return DaggerAppComponent.builder()
            .appModule(new AppModule(this)) //Problem is here
            .networkModule(new NetworkModule())
            .build();
}

1 个答案:

答案 0 :(得分:2)

最后,我找到了根本原因。它基本上是API级别的问题。 对于低于21的Android API级别,您需要在构建gradle文件中添加以下依赖项。还将Application类更改为MultiDexApplication,如下所示:

在应用程序build.gradle文件中:

List<Column> = config.getColumns();

在BaseApplication中,将Application类更改为Implementation 'com.android.support:multidex:1.0.3'

MultiDexApplication