2015-04-22 19 views
16

Właśnie zacząłem robić zastrzyk zależności za pomocą Dagger 2. Kiedy odwrócił się, mój modulescomponents i starał się budować mój wniosek, gradle wyrzucił błądNie można znaleźć klasy symbolu "Wygenerowano" dla Dagger 2

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

ja wykutych w nim i stwierdził, że jest błąd w jednej z klas Dagger generuje zrobić DI. Szczególna klasa że brakuje była javax.annotation.Generated a linia rzuca błąd jest linia, która anntotates Dagger generowane klasy jako @Generated("dagger.internal.codegen.ComponentProcessor")

This pytanie pomógł w znalezieniu rozwiązania, które jest dodanie pakietu javax jako zależność dodając linię compile 'org.glassfish:javax.annotation:10.0-b28' do mojego pliku kompilacji gradle. Doprowadziło to do udanej kompilacji.

Moje pytanie brzmi, dlaczego jest to, że nie dodaje się jako przechodnia zależność dla Dagger lub dlaczego nie ktoś w obliczu tego konkretnego problemu (zakładam więc, ponieważ nie mogłem znaleźć jakieś pytanie dotyczące tego tutaj?

+0

miałem ten sam problem. Rozwiązałem go, dodając: kompilacja 'javax.annotation: jsr250-api: 1.0' Nie jestem pewien, dlaczego to wciąż stanowi problem, ani czy jest to właściwe rozwiązanie. – FrozenCow

+0

Więcej informacji na ten temat można przeczytać tutaj: https://github.com/google/dagger/issues/95 –

+0

@AlexFu - Great !! Czy masz ochotę opublikować to jako odpowiedź? –

Odpowiedz

11

Przeczytaj to, aby uzyskać więcej informacji: https://github.com/google/dagger/issues/95

Zasadniczo, rozwiązanie jest robić to, co zostało już zrobione, która jest m.in. GlassFish bibliotekę javax adnotacji

+0

Masz ten problem w Dagger 2.14 –

22

Alex ma rację, ale lepiej, aby dodać zależność JSR250 zamiast. GlassFish

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

nadal nie mogę rozpoznać wygenerowanego komponentu "Dagger"? robił to minutę temu! lol –

+1

Dlaczego jsr jest lepszy niż adnotacja glassfish? –

+1

@IgorGanapolsky GlassFish jest serwerem aplikacji, więc biblioteka adnotacji jest ściśle związana z jego celami. JSR250 jest tylko standardem i zawiera tylko kilka adnotacji do ogólnego zastosowania. – tomrozb

0

Prawo odpowiedź dzisiaj jest użycie wersji sztyletu, który jest większy niż 2,1 (ze względu na fix wspomnianym przez @tomrozb jest zintegrowany w 2.1)

Powiązane problemy