Dagger 2: ошибка: [Dagger / MissingBinding] не может решить эту проблему - PullRequest
0 голосов
/ 04 декабря 2018

Я получаю ошибку [Dagger/MissingBinding] и не могу понять, почему эта ошибка.

Вот полный стек ошибок:

ошибка: [Dagger / MissingBinding]Файл java.io.File нельзя предоставить без конструктора @Inject или метода, аннотированного @ Provides.java.io.File внедряется в service.KeyStoreService (keyStoreFile) service.KeyStoreService внедряется в di.Module.WalletRepositoryModule.getWalletRepository (…, keyStoreService) repository.WalletRepositoryWterface *.

Следующие другие точки входа также зависят от этого: 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);
    }

}

ApplicationComponent класс:

Все остальные модули работают.Только после добавления WalletRepositoryModule я получил эту ошибку.Есть предложения?

1 Ответ

0 голосов
/ 04 декабря 2018

Вы должны сказать Кинжалу, как решить File.Я бы предложил вам @Provides @Named аннотированный метод.EG

  @Provides
  @Named("KEY_STORE_FILE") 
  public File provideKeyStoreFile() {
     return new File(path/to/keystore)
  }

и изменение

@Inject
public KeyStoreService(File keyStoreFile) {

в

@Inject
public KeyStoreService(@Named("KEY_STORE_FILE") File keyStoreFile) {
...