web-dev-qa-db-ja.com

Dagger 2のシンボルクラス "Generated"が見つかりません

_Dagger 2_を使用して依存性注入を開始しました。 modulescomponentsを起動してアプリケーションをビルドしようとすると、gradleがエラーをスローしました

Error:(4, 24) error: cannot find symbol class Generated

調べたところ、エラーはDaggerDIを実行するために生成するクラスの1つにあることがわかりました。欠落している特定のクラスは_javax.annotation.Generated_であり、エラーをスローする行はDagger生成クラスに@Generated("dagger.internal.codegen.ComponentProcessor")として注釈を付ける行です

This 質問は、_compile 'org.glassfish:javax.annotation:10.0-b28'_行をGradleビルドファイルに追加することにより、javaxパッケージを依存関係として追加するソリューションを見つけるのに役立ちました。これにより、ビルドが成功しました。

私の質問は、なぜそれがDaggerの推移的な依存関係として追加されないのか、または他の誰もこの特定の問題に直面しなかったのです(これに関する質問をここで見つけることができなかったので、私はそう思いますか?

23
x-treme

詳細はこちらをご覧ください: https://github.com/google/dagger/issues/95

基本的には、解決策は、グラスフィッシュのjavaxアノテーションライブラリを含む、すでに実行したことを実行することです。

13
Alex Fu

TL; DR Dagger> = 2.1を使用

Alexは正しいですが、GlassFishの代わりにJSR250依存関係を追加することをお勧めします

provided 'javax.annotation:jsr250-api:1.0'

または最新のgradleプラグイン:

compileOnly 'javax.annotation:jsr250-api:1.0'
28
tomrozb

これは、Java_HOMEがJavaバージョン9または10を指している場合に発生します。Java_HOMEをJava 8に切り替えると、問題が修正され、追加の依存関係は必要なくなります。

3

今日の正しい答えは、2.1より大きいバージョンの短剣を使用することです(@tomrozbで言及されている fix が2.1に統合されているため)

0
Soham

JVMをJava 8にダウングレードし、gradle buildは、Dagger 2を使用するAndroidアプリケーションで成功しました。

0
Juan Mendez