私はしばらくの間短剣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。
このサンプルプロジェクトでも同じエラーが発生する場合:
私はtutsplus here に関するDagger2チュートリアルを実行しようとしていましたが、アンダースコア構文(Dagger_ClassnameComponent)を使用しようとしたときに同じ問題に遭遇しました。
他の人が述べたように、新しいDagger APIはそのアンダースコア構文を使用せず、単にDaggerClassnameComponent構文を使用します。ただし、単純なアプリで新しい構文を使用しようとしても、クラスDaggerClassnameComponentが見つかりませんでした。 app/build/generated/source/apt/debug/packagename/componentフォルダーに配置する必要があると思います。
最初は、上記のフォルダーの下にファイルが生成されていませんでした。ただし、私のソリューションは、プロジェクトをクリーンアップしてビルドすることでした。その後、期待どおりにComponentクラスを使用できました。
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'
生成されたものからアンダースコアを削除したようです。 Dagger2で生成されたクラスは、Android Studio から突然欠落しています。