我正在两个项目之间切换使用构建风格。我正在使用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'问题主要是当在appModule中添加AppComponent时。
private AppComponent createAppComponent() {
return DaggerAppComponent.builder()
.appModule(new AppModule(this)) //Problem is here
.networkModule(new NetworkModule())
.build();
}发布于 2018-08-03 11:33:55
最后,我找到了根本原因。它基本上是API级别问题。对于低于21的android级别,您需要在build文件中添加以下依赖项。还将应用程序类更改为MultiDexApplication,如下所示:
在app build.gradle文件中:
Implementation 'com.android.support:multidex:1.0.3'在您的BaseApplication中,将应用程序类改为MultiDexApplication
public class BaseApplication extends MultiDexApplication {
@Override
public void onCreate() {
super.onCreate();
}
}https://stackoverflow.com/questions/51651998
复制相似问题