Dagger 2:关于子组件的错​​误,但我的应用程序中没有任何子组件

Eli*_*eth 5 android dagger-2

我正在尝试在我的应用中使用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);
}
Run Code Online (Sandbox Code Playgroud)

}

我的组件:

@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);

}
Run Code Online (Sandbox Code Playgroud)

这是我的应用程序中的onCreate:

@Override
public void onCreate() {
    super.onCreate();

    component = DaggerApplicationComponent.builder()
            .applicationModule(new ApplicationModule(this))
            .build();
}
Run Code Online (Sandbox Code Playgroud)

我也不能让DaggerApplicationComponent停止变红,但我认为这是因为该项目实际上并没有因为这个奇怪的子组件错误而构建?我尝试使用下划线(Dagger_ApplicationComponent),但这没有帮助.

我试过谷歌,但我找到的只是如何在Dagger中使用子组件的指南,这不是我想要的.我不想使用子组件.我只想使用一个组件.

另外,万一这很重要,这就是我在build.gradle文件中添加的内容:

在项目内容中:

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
Run Code Online (Sandbox Code Playgroud)

在应用程序级别build.gradle中:

apply plugin: 'com.neenbedankt.android-apt'
Run Code Online (Sandbox Code Playgroud)

然后在依赖项中:

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'
}
Run Code Online (Sandbox Code Playgroud)

感谢任何可以帮助我的人!我是Dagger2的新手,甚至在阅读了几本初学者指南之后,我仍然没有完全理解它(我希望尝试使用它会让事情变得更清楚......到目前为止,它很明显是一次漏油事件).提前抱歉我极有可能犯了一个愚蠢的初学者错误.

And*_*ost 4

你为什么使用com.neenbedankt.android-apt?据我所知它现在已经过时了

Dagger GitHub 页面解释了如何在 Android 项目中使用它。

dependencies {
    compile 'com.google.dagger:dagger:2.x'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.x'
}
Run Code Online (Sandbox Code Playgroud)

在这里您可以找到依赖项版本的Dagger 版本。

我不确定它是否能立即解决您的问题,但您绝对应该尝试一下。