[英]Intellij Cannot resolve symbol on import
對於不同的庫和不同的項目,此問題會間歇性地發生。 嘗試導入庫時,將識別 package,但無法解析 class 名稱。
如果在導入語句上,我right-click -> Goto -> the package's declaration
,我會看到所有反編譯的類都顯示在側窗格中——包括我需要的那些——如果我嘗試自動完成導入語句,我注意到下拉列表中沒有我需要的 class。
我已經嘗試過使緩存無效,但沒有用。 我找不到任何 class 沖突——在我的類路徑中沒有其他 jar 文件具有相同的 package 名稱。 我可以將這個 class 導入到其他項目中。
請看屏幕截圖:
有人知道嗎?
您可以嘗試使緩存無效並重新啟動 intellij,在許多情況下它會有所幫助。
文件 -> 使緩存無效/重新啟動
這可能有多種原因。 就我而言,這是錯誤的源根問題。 無效緩存不能與其他解決方案一起使用。
檢查您的模塊源根。
項目結構( Ctrl + Alt + Shift + S )。
模塊
選擇您的問題模塊。
更改窗口“來源”頂部的選項卡。
刪除不需要的源根。 保留一個並在此根中添加 src 和測試源根。
IntelliJ 在解決依賴項方面存在問題。 請嘗試以下操作:
File
-> Invalidate Caches/Restart
and Build your project
在您的項目控制台中運行此命令:
mvn idea:idea
完畢。 多次遇到這個問題。 嘗試過“使緩存無效並重新啟動”和所有其他解決方案。 運行該命令對我來說很完美。 我目前正在使用 IntelliJ 2019.2,但這也發生在以前的版本中,並且解決方案也有效。
檢查您的模塊依賴項。
我遇到了類似的問題,邁克的評論幫助我朝着解決它的方向前進。
盡管所需的庫也是我項目中模塊的一部分,但它需要更改范圍。 在模塊依賴項中,我將范圍更改為“編譯”而不是“測試”,現在對我來說效果很好。
我發現@jossef-harush和@matt-leidholm的以下答案從另一個鏈接很有用
Integer
)並按ALT + ENTER (或單擊燈泡圖標)Setup JDK
Configure
JDK
路徑不正確(指向/opt/jdk1.7.0_51
而不是/opt/jdk1.7.0_65
)JDK
路徑右鍵單擊 pom.xml 文件,轉到 Maven 單擊 Reimport。 我有類似的問題,這對我有用。
經過長時間的搜索,我發現我的機器上的一個 maven 項目的依賴項以某種方式損壞了。 奇怪的是,依賴在編譯的 java 代碼中仍然正常工作。 然而,當我清理並重建我的 maven 依賴緩存時,問題就消失了,IntelliJ 識別了這個包。 你可以通過運行來做到這一點:
mvn dependency:purge-local-repository
有趣的是,我的問題的根源不是 IntelliJ,而是 maven 本身。
對於不同的庫和不同的項目,此問題間歇地發生。 嘗試導入庫時,將識別包,但無法解析類名。
如果在import語句上,我right-click -> Goto -> the package's declaration
,我會在側窗格中看到所有反編譯的類-包括我需要的那些類-如果我嘗試自動完成import語句,我注意到下拉菜單中沒有顯示我需要的課程。
我已經嘗試使緩存無效,無法正常工作。 我找不到任何類沖突-在我的類路徑中沒有其他具有相同包名的jar文件。 我可以將此類導入其他項目。
請查看屏幕截圖:
有人知道嗎?
當我嘗試構建一個新的 Java 項目時,我也多次收到此錯誤。
以下是我如何解決這個愚蠢問題的步驟。
src/main/java
。net.gongmingqm10.sketch
。gradle wrapper
、 gradle idea
為項目構建 gradle 東西。build.gradle
文件中添加一些依賴,以及gradle build
,重新導入項目。User.java
和School.java
在現有的包net.gongmingqm10.sketch
解決方案:
首先構建項目,並將main/java標記為源根。 創建一個同名的新目錄net.gongmingqm10.sketch
。 將所有文件從舊的麻煩包移動到新包。
根本原因:
正如你從樹上看到的那樣。 我有一個名為net.gongmingqm10.sketch
的目錄。 但是我們真正需要的是三層目錄:net->gongmingqm10->sketch
但我完成我的建設項目的IntelliJ之前,我創建了一個名為新目錄net.gongmingqm19.sketch
,這將給我的名字一個真正的目錄net.gongmingqm10.sketch
。
當我們嘗試導入它時。 很明顯,intellij 如何導入 weired 目錄下名為abc
。
@Anton Dozortsev 我被類似的行為逼瘋了; 我最終重新安裝了 IDE,只是在刪除了 IDEA 應用程序、所有緩存、首選項等后才解決了這個問題。
在此期間,我嘗試了各種步驟(例如重新啟動、失效、刪除.idea
和*.iml
文件等。)
原來,問題是由於 IntelliJ 的idea.max.intellisense.filesize
設置。 我已將其設置為 100KB,這比我的依賴項的大小要小,導致 IntelliJ 將其顯示為未知,就像在您的屏幕截圖中一樣。
使固定:
單擊“幫助”->“編輯自定義屬性”
將屬性設置為更大的值; 默認為 2500KB idea.max.intellisense.filesize=2500
請嘗試文件-> 同步。 然后在無效之前關閉並重新打開 IntelliJ。
一旦我重新啟動。 我會失效,但重新啟動后同步清除了所有內容。
簡單重啟對我有用。
我建議先嘗試重新啟動,然后您可以選擇使緩存無效。
PS:清除系統緩存將導致清除本地歷史記錄。
我導入的 Maven 項目也有類似的問題。 在一個模塊中,它無法解析另一模塊的一部分的導入符號(是的,可以解析該模塊的一部分)。
我將“Maven 主目錄”更改為較新版本解決了我的問題。
更新:好 1 小時,回到破碎狀態......
我找到了源頭!
在我的例子中,我添加了一個包含一些 java 源文件的 jar 文件,但我認為 java 源是壞的,在 Intellij Idea 依賴庫中它自動添加源,所以在編輯器中導入是錯誤的,只需刪除“中的源代碼”項目結構”->“庫”,它對我有用。
對我來說是編輯 .idea 文件夾中的包文件,因為我不小心將源添加到這個 jar 庫中,而 android 無法通過刪除 b/m 圖片庫錯誤中標記的源行來解決它。
然后重建gradle和bam問題就解決了。
我遇到了同樣的問題,原因是項目來源的標記不正確。
我手動創建了根內容,並沒有注意到src/main/test
文件夾被標記為Sources
而不是Tests
。 所以這就是為什么我的測試類被假定具有其所有測試庫( JUnit
、 Mockito
等)的范圍是編譯,而不是測試。
一旦我將src/main/test
標記為測試並重建模塊,所有錯誤都消失了。
我最近在嘗試使用 Intellij 在 NiFi 上工作時遇到了這個問題,結果發現問題是 NiFi 需要 Maven >= 3.1.0 並且我檢查的版本(我想我的默認值)是 3.0.5。 更新項目的 Maven 版本修復了它,所以在某些情況下,Maven 版本不對齊可能是一件值得關注的事情......我猜這是相當不尋常的,但如果你在線程上走得這么遠,你可能有一個不尋常的問題:)
對於不同的庫和不同的項目,此問題間歇地發生。 嘗試導入庫時,將識別包,但無法解析類名。
如果在import語句上,我right-click -> Goto -> the package's declaration
,我會在側窗格中看到所有反編譯的類-包括我需要的那些類-如果我嘗試自動完成import語句,我注意到下拉菜單中沒有顯示我需要的課程。
我已經嘗試使緩存無效,無法正常工作。 我找不到任何類沖突-在我的類路徑中沒有其他具有相同包名的jar文件。 我可以將此類導入其他項目。
請查看屏幕截圖:
有人知道嗎?
file
-> Project Structure
-> Modules
,找到有問題的模塊,點擊它並選擇右側的Dependencies
選項卡。 單擊綠色加號,嘗試添加導致問題的 jar 或庫。 這對我行得通。
我上面嘗試的任何方法都不適合我(不是我嘗試了所有建議)。 最終的訣竅是重命名類——我只是在類名和文件名中添加了 2。 然后我手動解析了所有引用。 (由於它們未被識別,重構不會自動更改引用。)
一旦“2-version”在任何地方都得到了愉快的解決,我就能夠重構並從類和文件中刪除 2,然后一切都應該如此。
在我的情況下,解決方案是將項目添加為 maven 項目,除了我作為 maven 項目導入的事實:P
轉到 pom.xml -> 右鍵單擊 -> 添加為 maven 項目
對於不同的庫和不同的項目,此問題間歇地發生。 嘗試導入庫時,將識別包,但無法解析類名。
如果在import語句上,我right-click -> Goto -> the package's declaration
,我會在側窗格中看到所有反編譯的類-包括我需要的那些類-如果我嘗試自動完成import語句,我注意到下拉菜單中沒有顯示我需要的課程。
我已經嘗試使緩存無效,無法正常工作。 我找不到任何類沖突-在我的類路徑中沒有其他具有相同包名的jar文件。 我可以將此類導入其他項目。
請查看屏幕截圖:
有人知道嗎?
我的問題是我的 Maven 插件在更新后被禁用。 我去 Help -> Find Action... -> Typed in Maven 發現它是“Off”。 我點擊了切換開關,稍加加載后它被重新啟用。
嘗試通過以下方式從上游清理 maven:
mvn -U clean install
老問題,'21 回應。 我遇到了我的go build
可以成功構建代碼但我的 Goland IDE 顯示缺少模塊或依賴項的問題。 我嘗試使緩存無效並重新啟動,但遇到了同樣的問題。 從另一個 S/O 線程,我嘗試將 GO111MODULE=on 添加到我的路徑變量中,但這也沒有解決 IDE 問題。
對我有用的是在Preferences
> Go
> GOROOT
中Preferences
正確的 GOROOT 路徑。
我安裝了兩個版本的 go,一個來自 brew,一個來自在線 Go 安裝程序。 我選擇了 brew 安裝路徑,我的 IDE 能夠正確解析依賴項。
我已經嘗試了所有復雜的方法,但它們都不起作用,因為我懶得重新導入我嘗試了其他方法的項目。 我的是一個 gradle 項目,所以我去了我的 gradle.build 文件,刪除了依賴項,刷新了依賴項,然后再次添加了依賴項並再次刷新,之后導入開始工作。
面對類似的問題,我更新了 Intellij 並開始出現錯誤 - 無法解析符號。
去了插件,更新了插件並重新啟動問題解決了!
我在這里嘗試了每個答案,解決我的問題的是刪除.idea文件夾,我確實使緩存無效並在此之前重新啟動並在刪除.idea之后簡單地重新啟動,IDE要求重新導入gradle項目,導入后一切開始正常工作。
對於不同的庫和不同的項目,此問題間歇地發生。 嘗試導入庫時,將識別包,但無法解析類名。
如果在import語句上,我right-click -> Goto -> the package's declaration
,我會在側窗格中看到所有反編譯的類-包括我需要的那些類-如果我嘗試自動完成import語句,我注意到下拉菜單中沒有顯示我需要的課程。
我已經嘗試使緩存無效,無法正常工作。 我找不到任何類沖突-在我的類路徑中沒有其他具有相同包名的jar文件。 我可以將此類導入其他項目。
請查看屏幕截圖:
有人知道嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.