2015-04-22 30 views
16

我剛剛開始使用Dagger 2進行依賴注入。當我打滑了我modulescomponents並試圖建立我的應用程序,gradle扔錯誤無法找到匕首2的「生成」符號類

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

我挖了一下,發現該錯誤是在類Dagger產生做DI之一。唯一缺少的特定類是javax.annotation.Generated和投擲錯誤的行是通過將線compile 'org.glassfish:javax.annotation:10.0-b28' anntotates一個Dagger生成的類爲@Generated("dagger.internal.codegen.ComponentProcessor")

This問題找到了解決方案,它是將javax包添加作爲一個依賴幫助線到我的gradle構建文件。這導致了一個成功的構建。

我的問題是,這是爲什麼不作爲傳遞依賴添加Dagger或者爲什麼沒有任何人面對這個具體問題(我認爲是這樣,因爲我無法找到有關此這裏的任何問題嗎?

+0

我有同樣的問題。我'解決'它加入: 編譯'javax.annotation:jsr250-api:1.0' 我不知道爲什麼這仍然是一個問題,也不是這是否是正確的解決方案。 – FrozenCow

+0

有關此事的更多信息,請閱讀以下主題:https://github.com/google/dagger/issues/95 –

+0

@AlexFu - 太棒了!你介意把它作爲答案嗎? –

回答

22

亞歷克斯是正確的,但它是最好添加JSR250的依賴來代替。 GlassFish

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

還不能識別我生成的「Dagger」前綴組件?它是在一分鐘前做的!大聲笑 –

+1

爲什麼jsr比glassfish註釋更好? –

+1

@IgorGanapolsky GlassFish是一個應用程序服務器,所以註釋庫嚴格用於其目的。 JSR250只是一個標準,只包含一些用於一般用途的註釋。 – tomrozb

0

正確的答案是使用一個版本的匕首,它大於2.1(因爲@tomrozb提到fix的集成在2.1)