簡體   English   中英

Intellij 無法在導入時解析符號

[英]Intellij Cannot resolve symbol on import

對於不同的庫和不同的項目,此問題會間歇性地發生。 嘗試導入庫時,將識別 package,但無法解析 class 名稱。

如果在導入語句上,我right-click -> Goto -> the package's declaration ,我會看到所有反編譯的類都顯示在側窗格中——包括我需要的那些——如果我嘗試自動完成導入語句,我注意到下拉列表中沒有我需要的 class。

我已經嘗試過使緩存無效,但沒有用。 我找不到任何 class 沖突——在我的類路徑中沒有其他 jar 文件具有相同的 package 名稱。 我可以將這個 class 導入到其他項目中。

請看屏幕截圖:

有人知道嗎?

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

文件 -> 使緩存無效/重新啟動

這可能有多種原因。 就我而言,這是錯誤的源根問題。 無效緩存不能與其他解決方案一起使用。

檢查您的模塊源根。

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

  2. 模塊

  3. 選擇您的問題模塊。

  4. 更改窗口“來源”頂部的選項卡。

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

IntelliJ 在解決依賴項方面存在問題。 請嘗試以下操作:

  1. 右鍵單擊 pom.xml -> Maven -> 重新導入
  2. 再次右鍵單擊 pom.xml -> Maven -> Generate sources and update folders

File -> Invalidate Caches/Restart and Build your project

在您的項目控制台中運行此命令:

mvn idea:idea

完畢。 多次遇到這個問題。 嘗試過“使緩存無效並重新啟動”和所有其他解決方案。 運行該命令對我來說很完美。 我目前正在使用 IntelliJ 2019.2,但這也發生在以前的版本中,並且解決方案也有效。

檢查您的模塊依賴項。

  1. 項目結構( Ctrl + Alt + Shift + S )。
  2. 模塊
  3. 選擇您的問題模塊。
  4. 更改窗口“依賴項”頂部的選項卡。
  5. 檢查所需的庫(也許,您需要在選項卡“庫”中添加指定的庫)或模塊已在此處列出並且具有正確的范圍(主要是“編譯”)。

我遇到了類似的問題,邁克的評論幫助我朝着解決它的方向前進。
盡管所需的庫也是我項目中模塊的一部分,但它需要更改范圍。 在模塊依賴項中,我將范圍更改為“編譯”而不是“測試”,現在對我來說效果很好。

文件- >的Invalidate緩存/重新啟動或重建項目沒有工作WOR我。

對我的 Gradle 項目有用的是使用下面顯示的黃色標記按鈕從 IntelliJ v2017 右上角的 Gradle 選項卡“刷新所有 Gradle 項目”:

在此處輸入圖片說明

我發現@jossef-harush@matt-leidholm的以下答案從另一個鏈接很有用

  • 在 IntelliJ 編輯器中,單擊紅色關鍵字(例如Integer並按ALT + ENTER (或單擊燈泡圖標)
  • 從意圖菜單中選擇Setup JDK

IntelliJ 意圖菜單

  • 點擊Configure

項目 SDK 選擇對話框

  • 就我而言, JDK路徑不正確(指向/opt/jdk1.7.0_51而不是/opt/jdk1.7.0_65

損壞的配置 SDK 對話框

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

固定配置 SDK 對話框

  • 讓我們清除緩存

IntelliJ 文件菜單

遇到了同樣的問題,直到我注意到src文件夾被標記為根源而不是java 更改為僅作為源根的 java (src/main/java) 解決了我的問題在此處輸入圖片說明

右鍵單擊 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 項目時,我也多次收到此錯誤。

以下是我如何解決這個愚蠢問題的步驟。

  1. 創建一個空項目,並創建新目錄src/main/java
  2. 創建源包net.gongmingqm10.sketch
  3. 使用gradle wrappergradle idea為項目構建 gradle 東西。
  4. build.gradle文件中添加一些依賴,以及gradle build ,重新導入項目。
  5. 創建User.javaSchool.java在現有的包net.gongmingqm10.sketch
  6. 當我嘗試在 User.java 中使用 import School 時出現錯誤。
  7. Intellij 一直抱怨無法解析導入時的符號。

解決方案:

首先構建項目,並將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 將其顯示為未知,就像在您的屏幕截圖中一樣。

使固定:

  1. 單擊“幫助”->“編輯自定義屬性”

  2. 將屬性設置為更大的值; 默認為 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 所以這就是為什么我的測試類被假定具有其所有測試庫( JUnitMockito等)的范圍是編譯,而不是測試。

一旦我將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文件。 我可以將此類導入其他項目。

請查看屏幕截圖:

在此處輸入圖片說明

在此處輸入圖片說明

有人知道嗎?

對於 2020.1.4 Ultimate 版,我必須執行以下操作

View -> Maven -> Generate Sources and Update Folders For all Projects

我的問題是庫沒有從終端填充mvn -U clean install

在此處輸入圖片說明

我的問題是我的 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 > GOROOTPreferences正確的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM