You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dagger Hilt提示无@Provides方法提供ExecutorService,已配置仍报错如何解决

可能的原因
  • 构造函数注入时未指定对应@Named注解:你声明了两个同类型的ExecutorService绑定,Dagger无法自动匹配无标记的注入点,就会抛出无提供方法的报错。
  • @Named注解包导入错误:导入了非javax.inject.Named的同名注解,Dagger无法识别该注解的绑定标记作用。
  • AppModule未配置Hilt必填注解:缺少@Module注解或者@InstallIn注解,导致Hilt未加载该Module下的绑定规则。
  • 项目构建缓存异常:Dagger生成的注入代码未跟随你的配置更新,导致识别不到已有的@Provides方法。
对应解决方案
  1. 注入时明确标注对应@Named注解
    Java示例:
@Inject
public YourTaskClass(@Named("Single") ExecutorService singleExecutor) {
    this.singleExecutor = singleExecutor;
}

Kotlin示例:

class YourTaskClass @Inject constructor(
    @Named("FixedSize") private val fixedExecutor: ExecutorService
)
  1. 检查@Named的导入路径,确保导入的是javax.inject.Named,而非其他库的同名注解。
  2. 核对AppModule的注解配置,必须同时添加@Module和对应作用域的@InstallIn注解,示例:
@Module
@InstallIn(SingletonComponent.class)
public class AppModule {
    @Provides
    @Singleton
    @Named("Single")
    public ExecutorService provideSingleExecutor() { 
        return Executors.newSingleThreadExecutor(); 
    }

    @Provides
    @Singleton
    @Named("FixedSize")
    public ExecutorService provideFixedSizeExecutor() { 
        return Executors.newFixedThreadPool(3); 
    }
}
  1. 执行Clean Project + Rebuild Project,清除Dagger的构建缓存后重新编译。

内容的提问来源于stack exchange,提问作者Emmanuel Conradie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:36:04