我遇到了一个[Dagger/MissingBinding]错误,但我无法理解这个错误的原因。
以下是完整的错误堆栈:
error: [Dagger/MissingBinding] java.io.File无法在没有@Inject构造函数或@Provides注释方法的情况下提供。 java.io.File被注入于service.KeyStoreService(keyStoreFile)service.KeyStoreService被注入于di.Module.WalletRepositoryModule.getWalletRepository(…,keyStoreService)repository.WalletRepositoryInterface在di.component.ApplicationComponent.getWalletRepository()中提供
以下其他入口也依赖于它:
dagger.android.AndroidInjector.inject(T) [di.component.ApplicationComponent ? di.Module.BindModule_BindStartModule.StartActivitySubcomponent] dagger.android.AndroidInjector.inject(T) [di.component.ApplicationComponent ? di.Module.BindModule_BindAddWalletActivity.AddWalletActivitySubcomponent]
KeyStoreService类:
以下是完整的错误堆栈:
error: [Dagger/MissingBinding] java.io.File无法在没有@Inject构造函数或@Provides注释方法的情况下提供。 java.io.File被注入于service.KeyStoreService(keyStoreFile)service.KeyStoreService被注入于di.Module.WalletRepositoryModule.getWalletRepository(…,keyStoreService)repository.WalletRepositoryInterface在di.component.ApplicationComponent.getWalletRepository()中提供
以下其他入口也依赖于它:
dagger.android.AndroidInjector.inject(T) [di.component.ApplicationComponent ? di.Module.BindModule_BindStartModule.StartActivitySubcomponent] dagger.android.AndroidInjector.inject(T) [di.component.ApplicationComponent ? di.Module.BindModule_BindAddWalletActivity.AddWalletActivitySubcomponent]
KeyStoreService类:
public class KeyStoreService implements KeyStoreServiceInterface {
private final KeyStore keyStore;
@Inject
public KeyStoreService(File keyStoreFile) {
keyStore = new KeyStore(keyStoreFile.getAbsolutePath(), Geth.LightScryptN, Geth.LightScryptP);
}
}
WalletRepositoryModule类:
@Module
public class WalletRepositoryModule {
@Provides
@ApplicationScope
WalletRepositoryInterface getWalletRepository(SharedPreferencesHelper sharedPreferencesHelper, KeyStoreService keyStoreService){
return new WalletRepository(sharedPreferencesHelper, keyStoreService);
}
}
应用程序组件类:
@ApplicationScope
@Component(modules = {ApplicationContextModule.class,
SharedPreferencesModule.class,
KeyStoreModule.class,
SharedPreferenceHelperModule.class,
AndroidInjectionModule.class,
AndroidsupportInjectionModule.class,
WalletRepositoryModule.class})
public interface ApplicationComponent {
@Component.Builder
interface Builder {
@BindsInstance
Builder application(MyApplication myApplication);
ApplicationComponent build();
}
void inject(MyApplication myApplication);
@ApplicationContext
Context getApplicationContext();
SharedPreferences getSharedPreferences();
KeyStoreServiceInterface getKeyStoreService();
SharedPreferencesHelper getSharedPreferencesHelper();
WalletRepositoryInterface getWalletRepository();
}
所有其他模块都正常工作。只有在添加WalletRepositoryModule后,我遇到了这个错误。有什么建议吗?