_Dagger 2
_を使用して依存性注入を開始しました。 modules
、components
を起動してアプリケーションをビルドしようとすると、gradle
がエラーをスローしました
Error:(4, 24) error: cannot find symbol class Generated
調べたところ、エラーはDagger
がDI
を実行するために生成するクラスの1つにあることがわかりました。欠落している特定のクラスは_javax.annotation.Generated
_であり、エラーをスローする行はDagger
生成クラスに@Generated("dagger.internal.codegen.ComponentProcessor")
として注釈を付ける行です
This 質問は、_compile 'org.glassfish:javax.annotation:10.0-b28'
_行をGradleビルドファイルに追加することにより、javax
パッケージを依存関係として追加するソリューションを見つけるのに役立ちました。これにより、ビルドが成功しました。
私の質問は、なぜそれがDagger
の推移的な依存関係として追加されないのか、または他の誰もこの特定の問題に直面しなかったのです(これに関する質問をここで見つけることができなかったので、私はそう思いますか?
詳細はこちらをご覧ください: https://github.com/google/dagger/issues/95
基本的には、解決策は、グラスフィッシュのjavaxアノテーションライブラリを含む、すでに実行したことを実行することです。
TL; DR Dagger> = 2.1を使用
Alexは正しいですが、GlassFishの代わりにJSR250依存関係を追加することをお勧めします
provided 'javax.annotation:jsr250-api:1.0'
または最新のgradleプラグイン:
compileOnly 'javax.annotation:jsr250-api:1.0'
これは、Java_HOMEがJavaバージョン9または10を指している場合に発生します。Java_HOMEをJava 8に切り替えると、問題が修正され、追加の依存関係は必要なくなります。
今日の正しい答えは、2.1より大きいバージョンの短剣を使用することです(@tomrozbで言及されている fix が2.1に統合されているため)
JVMをJava 8にダウングレードし、gradle build
は、Dagger 2を使用するAndroidアプリケーションで成功しました。