2014-11-15 16 views
53

對於不同的庫和不同的項目,此問題會間歇性地發生。 當試圖導入一個庫時,包會被識別,但類名不能被解析。Intellij在導入時無法解析符號

如果在導入語句I right-click -> Goto -> the package's declaration上,我看到了側窗格中顯示的所有反編譯類 - 包括我需要的類 - 如果我嘗試自動完成導入語句,則會注意到類I需求未在下拉菜單中顯示。

我試過已經無效的緩存,不起作用。我找不到任何類衝突 - 我的類路徑中沒有其他jar文件具有相同的包名稱。 我可以將這個類導入到其他項目中。

請參閱屏幕截圖:

enter image description here

enter image description here

任何有線索?

+1

您確保庫添加到模塊?它可以作爲項目庫添加​​,但不在模塊類路徑中。 – mkobit

+0

是 - 在項目結構中,庫被添加爲依賴項 - 實際上,我認爲這是Intellij中的一個錯誤 - 隨機出現在不同的庫/項目中 - 從頭重新創建項目通常會修復它 –

+0

如果所有內容都提到在答案是正確的。關閉該項目並重新導入。這爲我解決了這個問題。 –

回答

110

您可以嘗試使緩存無效並重新啓動intellij,在很多情況下它會有所幫助。

文件 - >的Invalidate緩存/重啓

+0

清潔項目也幫助 – GeRyCh

+1

@GeRyCh恕我直言,Eclipse清潔= Intellij無效緩存 – Gangnus

+11

不適用於我 – AnnabellChan

8

我遇到類似的問題,邁克的評論幫助我的方向移動來解決它。
儘管所需的庫也是我項目中模塊的一部分,但它需要更改範圍。在模塊依賴關係中,我將範圍更改爲「編譯」而不是「測試」,現在對我來說工作正常。

+0

編譯而不是測試爲我工作。你知道爲什麼嗎? – 30thh

6

檢查您的模塊依賴關係。

  1. 項目結構(Ctrl鍵 + Alt鍵 + + 小號)。
  2. 模塊
  3. 選擇您的問題模塊。
  4. 更改窗口「依賴項」頂部的選項卡。
  5. 檢查需要的庫(也許,您需要在選項卡'庫'中添加指定的庫 )或模塊已在此處列出,並且它具有 範圍(主要是「complile」)。
13

可能有多種原因。在我的情況下,它是錯誤的根源問題。使緩存失效無法與其他解決方案一起使用。

檢查你的模塊源的根。

  1. 項目結構(Ctrl + Alt + Shift + S)。

  2. 模塊

  3. 選擇您的問題模塊。

  4. 更改窗口「Sources」頂部的選項卡。

  5. 刪除不需要的源根。保留一個並添加src並在此根目錄中測試源根。

+0

這應該被標記爲正確的答案。無效的緩存不起作用。 – akshaynagpal

1

我試過無效緩存和重新啓動,但只爲我工作的事情被徹底殲滅.idea目錄,然後從頭開始創建一個新的項目。

+0

這不是一個真正的解決方案。我曾嘗試過,但它不影響我的情況。 – Tung

1

我也嘗試構建一個新的Java項目時多次出現此錯誤。

下面是我如何得到這個愚蠢的問題的一步。

  1. 創建一個空項目,並創建新目錄src/main/java
  2. 創建源包net.gongmingqm10.sketch
  3. 使用gradle wrappergradle idea爲項目構建gradle stuff。
  4. build.gradle文件和gradle build中添加一些依賴項,重新導入該項目。
  5. 在現有的包net.gongmingqm10.sketch
  6. 創建User.javaSchool.java我得到了錯誤,而我嘗試使用進口學校User.java。
  7. Intellij一直抱怨無法解析導入符號。

解決方案:

第一生成項目,並標記主/ Java作爲源根。 創建一個新的目錄同名net.gongmingqm10.sketch。將舊麻煩包中的所有文件移至新包。

根源:

Directory tree of source code

你可以從樹中看到。我有一個名爲net.gongmingqm10.sketch的目錄。但是,我們真正需要的是一個3級目錄:NET-> gongmingqm10->素描

但我完成我的建設項目的IntelliJ之前,我創建了一個名爲net.gongmingqm19.sketch新目錄,這將會給我一個真正的目錄名爲net.gongmingqm10.sketch

當我們試圖導入它。顯然,intellij如何導入名爲a.b.c的目錄下的文件。

+0

謝謝老兄,這是我的問題。 編輯:elaborating ...我從1個maven模塊複製到另一個,並複製扁平目錄。而Intellij看起來好像有一切排序,我的文件夾實際上是「a.b.c」而不是> b> c。 – Qbert

0

簡單重新啓動爲我工作。

我會建議先嚐試重新啓動,然後您可以選擇使緩存無效。 PS:清除系統緩存將導致清除本地歷史記錄。

0

我和我導入的Maven項目有類似的問題。在一個模塊中,它不能解析其他模塊的部分導入符號(是的,該模塊的一部分可以解決)。

我將「Maven主目錄」更改爲新版本解決了我的問題。

更新:好1小時,回破的狀態......

0

缺少io?嘗試import org.openide.util.io.ImageUtilities

0

我找到了原因!

在我的情況下,我添加了一個jar文件,其中包含一些java源文件,但我認爲java源代碼不好,在Intellij Idea依賴庫中它自動添加源代碼,所以在Editor中導入是BAD, 「項目結構」 - >「庫」中的源代碼,它適用於我。

0

這對我來說是什麼編輯.idea文件夾中的包文件,因爲我不小心向這個jar庫中添加了源文件,並且android無法通過刪除b/m圖片中標記的源代碼行來解決它library error

然後重建gradle和bam問題就解決了。

0

我有同樣的問題,原因是項目源的標記不正確。

我手動創建了根內容,並沒有注意到src/main/test文件夾被標記爲Sources而不是Tests。所以這就是爲什麼我的測試類被假定爲具有所有測試庫(JUnitMockito等)的編譯範圍而不是測試。

只要我標記爲src/main/test作爲測試並重建模塊,所有的錯誤都消失了。

0

@Anton Dozortsev我被類似的行爲逼瘋了;我最終重新安裝IDE了很多次,只是在刪除了IDEA應用程序,所有緩存,首選項等後才得以解決問題。

我在過渡期間嘗試了各種步驟(如重新啓動,失效,刪除.idea*.iml文件等)。

原來,問題是由於IntelliJ的idea.max.intellisense.filesize設置。我將它設置爲100KB,這比我的依賴項的大小要小,導致IntelliJ將它顯示爲未知,就像在截圖中一樣。

修復:

  1. 點擊幫助 - >編輯自定義屬性

  2. 將屬性設置爲一個較大的值;默認爲2500KB idea.max.intellisense.filesize=2500

0

我發現了以下的答案必須從@jossef-harush@matt-leidholm有用from another link

    中的IntelliJ編輯
  • ,點擊紅色的關鍵字Integer例如)並按ALT + ENTER(或點擊燈泡圖標)
  • 從意圖菜單

IntelliJ intentions menu

  • 點擊Configure

Project SDK selection dialog

  • 在我的情況下,選擇Setup JDKJDK路徑是不正確的(指上/opt/jdk1.7.0_51我的/opt/jdk1.7.0_65 nstead)

Broken Configure SDK dialog

  • 點擊......並瀏覽到正確的路徑JDK

Fixed Configure SDK dialog

  • 讓我們清除緩存

IntelliJ File menu

0

我有這個最近試圖使用的IntelliJ對NiFi工作,原來的問題是,NiFi需要的Maven> = 3.1.0,並且我已經簽出與版本(我想我的默認)是3.0.5。更新項目的Maven版本修復了它,所以在某些情況下,Maven版本的錯誤對齊可能是一件看起來的事情......我猜這是非常不尋常的,但是如果你在線程中得到這麼多,你可能會有一個不尋常的問題:)

0

Intellij在解決依賴問題上存在問題。 嘗試以下操作。 1.右鍵單擊Maven - > reimport 2.再次右鍵單擊Maven - > generate-resources。

0

文件 - >的Invalidate緩存/重啓 而 生成項目

+0

此解決方案已在上面發佈。 https://stackoverflow.com/a/27508764/ –

相關問題