作者:殉情放开那只小兔子 | 来源:互联网 | 2023-02-12 19:45
我正在尝试在我的应用中使用Dagger 2.我一直收到这个错误:
错误:任务':app:compileDebugJavaWithJavac'的执行失败.java.lang.IllegalArgumentException:@dagger.Module没有定义元素子组件()
我在应用程序中根本不使用子组件,因此我不知道为什么会发生此错误.我有一个模块和一个组件.模块:
@Singleton
@Module
public class ApplicationModule {
private final WSTApplication application;
public ApplicationModule(WSTApplication application) {
this.application = application;
}
@Provides
public WSTApplication application() {
return this.application;
}
@Provides
public Context applicationContext() {
return this.application;
}
@Provides
Realm provideRealm() {
return Realm.getDefaultInstance();
}
@Provides
RealmHelper providesRealmHelper(final Realm realm) {
return new RealmHelper(realm);
}
@Provides
@Singleton
public WorkoutPresenter providesWorkoutPresenter(final RealmHelper helper) {
return new WorkoutPresenter(helper);
}
}
我的组件:
@Singleton
@Component(modules={ApplicationModule.class})
public interface ApplicationComponent {
void inject (MainActivity activity);
WSTApplication application();
Context applicationContext();
Realm provideRealm();
RealmHelper providesRealmHelper(Realm realm);
WorkoutPresenter providesWorkoutPresenter(RealmHelper helper);
}
这是我的应用程序中的onCreate:
@Override
public void onCreate() {
super.onCreate();
compOnent= DaggerApplicationComponent.builder()
.applicationModule(new ApplicationModule(this))
.build();
}
我也不能让DaggerApplicationComponent停止变红,但我认为这是因为该项目实际上并没有因为这个奇怪的子组件错误而构建?我尝试使用下划线(Dagger_ApplicationComponent),但这没有帮助.
我试过谷歌,但我找到的只是如何在Dagger中使用子组件的指南,这不是我想要的.我不想使用子组件.我只想使用一个组件.
另外,万一这很重要,这就是我在build.gradle文件中添加的内容:
在项目内容中:
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
在应用程序级别build.gradle中:
apply plugin: 'com.neenbedankt.android-apt'
然后在依赖项中:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:design:24.2.1'
compile 'com.google.dagger:dagger:2.1'
compile 'com.android.support:support-v4:24.2.1'
testCompile 'junit:junit:4.12'
apt 'com.google.dagger:dagger-compiler:2.7'
provided 'org.glassfish:javax.annotation:10.0-b28'
}
感谢任何可以帮助我的人!我是Dagger2的新手,甚至在阅读了几本初学者指南之后,我仍然没有完全理解它(我希望尝试使用它会让事情变得更清楚......到目前为止,它很明显是一次漏油事件).提前抱歉我极有可能犯了一个愚蠢的初学者错误.