2013-02-14 78 views
28

我有一個maven項目,沒有問題從命令行構建。然而,當我用的IntelliJ構建它,我得到的錯誤:建設與龍目島的@ Slf4j和Intellij:找不到符號日誌

java: FileName.java:89: cannot find symbol 
symbol : variable log 

沒有在java文件中定義或進口原木,但有類體前

@Slf4j 
final public class FileName { 

聲明,應該定義日誌類。

在項目結構窗,類:

Maven: org.slf4j:jcl-over-slf4j:1.6.1 
Maven: org.slf4j:slf4j-api:1.6.6 
Maven: org.slf4j:slf4j-log4j12:1.6.6 
Maven: org.slf4j:slf4j-simple:1.6.6 

在庫中列出,並標明爲已下載和使用。

任何想法爲什麼這將通過命令行maven構建,但不是通過IntelliJ和如何解決問題?

回答

10

推測這就是您正在使用的Lombok @Slf4j註釋。如果你想讓IntelliJ識別Lombok註釋,你需要在IntelliJ中安裝Lombok插件。否則,如果您嘗試使用不存在的字段,您會期望什麼?

+0

我已經安裝了龍目島的插件。在配置選項方面似乎沒有太多。也許這是插件中的錯誤? – user1991839 2013-02-14 02:31:23

+0

我已經成功地將它與IDEA 11和12一起使用。有時,某些東西似乎「忘記」了Lombok,並且我在源代碼中獲得了一堆紅線,但它仍然爲我構建。它來了,但是,所以插件絕對不是沒有錯誤。 – 2013-02-14 02:34:11

+0

您是否知道是否有解決方法來克服這個問題?就像可能沒有通過插件通知Lombok庫的IntelliJ一樣?我正在嘗試使用IntelliJ進行調試測試,這使我很難將其用於那個 – user1991839 2013-02-14 06:42:12

48

除了具有Lombok的插件安裝 (V0.5的IntelliJ 12),還確保「啓用註釋處理」複選框處於選中下: 首選項 - >編譯器 - >標註處理

+6

這個人每次都會得到我。 – 2013-06-11 00:47:34

+0

我沒有啓用註釋處理並且工作:|我確實已經安裝了lombok插件。 – 2016-07-21 06:57:17

+0

我安裝了插件,它的工作原理沒有改變這個設置。但是,我決定改變它以達到很好的效果。 – sheldonkreger 2017-08-10 17:44:24

3

在IDEA 13這似乎不再是一個問題,你只需要安裝Lombok插件。

2

我可能會ungraving死的話題,但一個簡單的解決方法是在你的依賴檢查(Maven的POM的爲例),如果你是其中的logback 核心的logback經典

Slf4j只是界面,你需要它的具體實現工作。

我一直在IDEA搞亂它欺騙了兩次,現在我好去:d

1

JDK8下編譯時,我看到這個問題,使用舊版本的龍目島。將項目設置回JDK7使問題消失。

+0

升級的POM龍目依賴也適用:) – 2016-06-02 11:26:17

7

在Intellij版本2016,2017中,啓用首選項 - >編譯器 - >註釋處理器不適用於我!

以下附加複選框幫助:enter image description here

+0

今天,該複選框再次幫助了我! – 2017-04-13 10:49:12

+0

我添加了插件並啓用了註釋處理器,但仍然沒有運氣。你能提供如何訪問上面的複選框嗎? – 2017-11-22 13:43:03

+0

@PhilipJohn:在首選項搜索框中,輸入「Lombok」? – 2017-11-22 17:05:08