web-dev-qa-db-ja.com

Dagger2は「Dagger_」ファイルを生成しません

私はしばらくの間短剣2を使用していましたが、今日コンパイルしようとするとこのエラーが発生しました:

エラー:(13、31)エラー:シンボルクラスDagger_GlobalComponentが見つかりません

エラー:(38、21)エラー:シンボル変数Dagger_GlobalComponentが見つかりません

コードは次のとおりです。

public class MyAppApplication extends Application {

private static GlobalComponent component;

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

    component = Dagger_GlobalComponent.builder()
            .busModule(new BusModule())
            .syncModule(new SyncModule())
            .serviceModule(new ServiceModule())
            .contextModule(new ContextModule(this))
            .persistenceModule(new PersistenceModule(this))
            .build();
}}

そして、gradleの依存関係:

...
compile 'com.google.dagger:dagger:2.0-SNAPSHOT'
apt 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT'
provided 'org.glassfish:javax.annotation:10.0-b28'
...

解決策はありますか?既に次のことを試みました:クリーンアップ、再構築、依存バージョンの変更、Gradleキャッシュの削除と再インストールAndroid Studio。

このサンプルプロジェクトでも同じエラーが発生する場合:

https://github.com/gk5885/dagger-Android-sample

https://github.com/mgrzechocinski/dagger2-example

21
FireZenk

私はtutsplus here に関するDagger2チュー​​トリアルを実行しようとしていましたが、アンダースコア構文(Dagger_ClassnameComponent)を使用しようとしたときに同じ問題に遭遇しました。

他の人が述べたように、新しいDagger APIはそのアンダースコア構文を使用せず、単にDaggerClassnameComponent構文を使用します。ただし、単純なアプリで新しい構文を使用しようとしても、クラスDaggerClassnameComponentが見つかりませんでした。 app/build/generated/source/apt/debug/packagename/componentフォルダーに配置する必要があると思います。

最初は、上記のフォルダーの下にファイルが生成されていませんでした。ただし、私のソリューションは、プロジェクトをクリーンアップしてビルドすることでした。その後、期待どおりにComponentクラスを使用できました。

36
lustig

Dagger 2 がリリースされたため、gradleの依存関係を変更する必要があります。

compile 'com.google.dagger:dagger:2.0'
provided 'com.google.dagger:dagger-compiler:2.0'
provided 'org.glassfish:javax.annotation:10.0-b28'
10
steffandroid

生成されたものからアンダースコアを削除したようです。 Dagger2で生成されたクラスは、Android Studio から突然欠落しています。

9
Darren