2016-05-07 51 views
4

我可能在這裏錯過了一些非常基本的東西,所以希望這不是一個難題。Java/IntelliJ不認識Dagger2組件的「Dagger」關鍵字

我的

CoffeeShop coffeeShop = DaggerCoffeeShop.create(); 

等效沒有被由IDE(的IntelliJ)識別。 這是一個本地Java項目。 「匕首 CoffeShop」部分全是紅色。

該組件使用以下語法:

@Component(modules = <ModuleClassName>.class) 
public interface CoffeeShop { 
    // some methods. 
    // does it matter what goes in here for it to recognise the component? 
} 

的「ModuleClassName」與@Module註釋一個模塊的名稱和包括@Provides方法。

爲了讓我使用這個在搖籃的庫:

compile 'com.google.dagger:dagger:2.4' 
compile 'com.google.dagger:dagger-compiler:2.4' 

那是我所需要的?我對任何註釋都沒有任何錯誤,只是它無法識別的這個Dagger關鍵字。我錯過了什麼?

讚賞任何幫助或方向。我沒有發現文檔對於像我這樣的初學者來說非常棒。

+0

一個問題可能是IntelliJ沒有與您正在使用的庫同步。您應該在某處看到Gradle刷新/同步符號。點擊它應該可以幫到你。另外,它可能是IntelliJ的問題,而不是Java的問題。你可能想要改寫你的問題標題。 – Sid

+0

感謝您的提示。我更新了這個主題。就Gradle同步而言,我已經做了很多次了。我很難過。我看了太久。我需要另一個人的眼睛從一個人知道以前做過。我原以爲這樣的人回答會很簡單。希望我已經很好地解釋了我的自我。 –

+0

請參閱:http://stackoverflow.com/a/41815478/1010868 –

回答

2

您的註釋處理可能未啓用。

Settings - >Compiler - >Annotation Processor - >Enable annotation processing

之後,Rebuild Project

如果仍然認爲不存在的文件(儘管正常運行的應用程序),你就必須添加生成的源文件夾作爲源文件夾:File - >Project Structure - >Modules - >選擇您的項目 - >Sources - >用匕首的東西右鍵點擊生成的文件夾 - >Sources


compile 'com.google.dagger:dagger-compiler:2.4'應該是apt範圍或annotationProcessor作用域。

+0

「啓用註釋處理」使咖啡機示例應用程序可以正常工作。正如它在正常運行。但由於某些原因,它仍然以紅色標記「DaggerCoffeeApp_Coffee」,表示無法解析該符號。我下載了示例應用程序,並試圖讓它在使用Gradle之前運行我的其他應用程序。這是對你的建議的改進!我會標記它已解決,但從技術上說不是。 buildscript沒有做任何事情,它說無論如何都找不到maven url的路徑。 –

+0

Hrmm ...所以你說的是項目本身運行時啓用了註釋處理,但是Intellij仍然無法解決路徑問題?這意味着你必須將生成的文件夾添加爲源文件夾。 – EpicPandaForce

+0

滴答啓用註釋處理而不做其他任何事情使應用程序工作。然後在gradle文件中添加其他的東西沒有做任何事情(除了給出關於URL的額外消息)。後來我改變了註釋部分的路徑,並且該消息不再出現,但我仍然得到紅色文本。所以它必須是簡單的。也許與這件事情有關。我正在做什麼在這裏說,但它仍然在抱怨:https://github.com/tbroyer/gradle-apt-plugin –