java - Dagger 2 给出错误 '...cannot be provided without an @Provides-annotated method'

标签 java android dependency-injection dagger-2

我正在尝试构建一个简单的 Android 项目,以便理解 Dagger 2。我目前有组件

我的组件.java

@Component(modules = {MyModule.class})
public interface MyComponent {
    MyModule provideModule();
}

MyModule.java

@Module
public class MyModule {
    @Provides
    Repo provideRepo(){
        return new Repo();
    }
}

repo .java

public class Repo {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

我已经将这些添加到应用程序的 build.gradle

apt 'com.google.dagger:dagger-compiler:2.2'
compile 'com.google.dagger:dagger:2.2'
provided 'javax.annotation:jsr250-api:1.0'

我也在项目的依赖项中使用了这个

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

在构建项目时,出现此错误

Error:(10, 14) error: com.example.bharatkulratan.daggernotworking.MyModule cannot be provided without an @Inject constructor or from an @Provides-annotated method.

错误读出是因为缺少 @Provided 注释但是 provideRepo() 方法已经有了 @Provided 的注解。我无法找出缺失的部分。请帮忙。

最佳答案

删除这个

MyModule provideModule();

然后在原处加上这个

Repo provideRepo();

关于java - Dagger 2 给出错误 '...cannot be provided without an @Provides-annotated method',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38027245/

相关文章:

java - 基于条件的依赖注入(inject)

java - 如何根据先前的下拉值过滤后选择html下拉值

java - 自定义 Android 适配器从不显示数据

c# - 如何使用 .NET Core 依赖注入(inject)在运行时解析服务和注入(inject)额外的构造函数参数?

android - 在 Android 的 WebView 中播放本地视频

android - 无法使用 SherlockFragmentActivity 获取应用程序上下文

spring - 使用 componentModel = "spring"的 Mapstruct 依赖注入(inject)给出空对象

java - 如何为给定类型的字符串创建正则表达式?

java - 填充对象的链接列表(程序运行时没有任何反应)

java - 什么实体处理依赖注入(inject)?在 CDI 和 EJB3 中