2015-04-22 11 views
16

Ich habe gerade mit der Abhängigkeitsinjektion unter Verwendung von Dagger 2 begonnen. Als ich hochgedreht meine modules, components und versuchte, meine Anwendung zu erstellen, warf gradle den FehlerKann die Symbolklasse "Generated" nicht für Dolch 2 finden

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

ich hinein gegraben und festgestellt, dass der Fehler in einer der Klassen ist DaggerDI zu tun erzeugt. Die besondere Klasse, ist es fehlte javax.annotation.Generated und die Linie den Fehler zu werfen ist die Linie, die anntotates eine Dagger generierte Klasse als @Generated("dagger.internal.codegen.ComponentProcessor")

This Frage half in die Lösung zu finden, die das javax Paket als Abhängigkeit hinzuzufügen, ist durch das Hinzufügen der Zeile compile 'org.glassfish:javax.annotation:10.0-b28' zu meiner Gradle-Build-Datei. Dies führte zu einem erfolgreichen Build.

Meine Frage ist, warum ist das nicht als transitive Abhängigkeit für Dagger hinzugefügt oder warum nicht jemand anderes dieses besondere Problem konfrontiert (Ich gehe davon aus, so, da ich keine Frage hier in Bezug auf diese finden könnte?

+0

ich hatte das gleiche Problem. Ich löste es durch Hinzufügen: kompilieren 'javax.annotation: jsr250-api: 1.0' Ich bin mir nicht sicher, warum das immer noch ein Problem noch, ob dies die richtige Lösung ist. – FrozenCow

+0

Für weitere Informationen zu diesem Thema können Sie den Thread hier lesen: https://github.com/google/dagger/issues/95 –

+0

@AlexFu - Great! Macht es Ihnen etwas aus, es als Antwort zu posten? –

Antwort

11

Lesen Sie diese für weitere Informationen: https://github.com/google/dagger/issues/95

Grundsätzlich ist die Lösung zu tun ist, was Sie bereits getan haben, das ist die Glassfish javax Anmerkung Bibliothek umfassen

+0

habe dieses Problem in Dolch 2.14 –

22

Alex ist richtig, aber es ist besser JSR250 Abhängigkeit statt hinzuzufügen. von GlassFish

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

kann immer noch nicht erkannt meine generierte "Dagger" Präfix-Komponente ?. Es war vor einer Minute! lol –

+1

Warum ist Jsr besser als Glassfish Annotation? –

+1

@IgorGanapolsky GlassFish ist ein Anwendungsserver, daher ist die Annotationsbibliothek ausschließlich für ihre Zwecke bestimmt. JSR250 ist nur ein Standard und enthält nur einige Anmerkungen für den allgemeinen Gebrauch. – tomrozb

0

Die richtige Antwort ist heute eine Version von Dolch zu verwenden, die größer als 2,1 ist (wegen der von @tomrozb erwähnte fix wird in 2.1 integriert)

Verwandte Themen