22

しばらくの間、ダガー 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

4

3 に答える 3

36

ここで tutsplus の Dagger2 チュートリアルに従おうとしましたが、アンダースコア構文 (Dagger_ClassnameComponent) を使用しようとすると同じ問題に遭遇しました。

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

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

于 2015-04-12T22:15:37.187 に答える
10

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'
于 2015-04-08T10:45:24.290 に答える
9

生成されたものからアンダースコアを削除したようです。Dagger2 で生成されたクラスが突然 Android Studio から欠落していることを確認してください。

于 2015-04-08T10:46:35.310 に答える