簡體   English   中英

intelliJ 找不到特定的方法

[英]intelliJ cannot find a specific method

我在以下代碼中遇到編譯錯誤,我不知道如何修復。

 public class Test throws IOException{
      public static void main(String[] args) {
           String path = "document.txt";
           File file = new File(path);
           Files.readString(file.toPath()); //cannot find symbol method readString(java.nio.file.Path)
      }
 }

但我明白了

錯誤:(8, 14) java: 找不到符號
符號:方法 readString(java.nio.file.Path)
位置:類 java.nio.file.Files

有很多事情需要注意。

  • 這只發生在java.nio.file.Files readString(Path) 如果我要嘗試size(Path)java.nio.file.Files另一種方法),它可以工作
  • 此代碼在 intelliJ 中不起作用,但在 eclipse 中起作用

  • 如果我在 intelliJ 中創建了一個新項目,但不在我從 github 克隆的當前 Maven 項目中,則此代碼有效

在這里嘗試了所有建議包括:

  • 構建 > 重建項目
  • 僅重新編譯Test.java
  • 文件 > 使緩存無效
  • 檢查 /src 文件夾被標記為源文件夾
  • 重新導入 Maven 依賴項

正如 Axel 的回答所指出的,問題確實與 Java 版本有關,但與 SDK 或語言級別無關。

通過轉到文件 > 設置 > 構建 > 編譯器 > Java 編譯器來解決它。 然后,我將 Project Bytecode Version 更改為 11,並刪除了設置為 10 的 Per Module Bytecode Version 條目。

Files.readString(Path)是在 Java 11 中引入的。看起來你的安裝仍然在 Java 8 上。

首先通過在項目設置/項目下設置正確的 SDK 和語言級別來確保您的項目使用 Java 11。

如果這不起作用,請確保您已安裝 IntelliJ 的 JDK 11 版本。 你可以當你的小角度向下點擊下載按鈕的右側的IntelliJ下載頁面上的JDK 8和JDK版本11之間選擇的IntelliJ下載頁面

與 Lindstorm 和 Axel 的回答相同,問題是由於您的 Java 版本配置錯誤。 您可能使用與 JDK 11 不同的源/目標版本來構建源代碼(至少對於 Files::readString)。 我使用上述方法解決了這個問題。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <source>11</source>
        <target>11</target>
    </configuration>
</plugin>

我在maven插件maven-compiler-pluginconfiguration部分。 如果您沒有這部分(例如您使用 spring boot run),請將其添加到您的 pom.xml plugins區域。

在更改@Lindstorm 提到的項目字節碼版本后,intelliJ 在編譯時仍然顯示錯誤。 我做了以下操作以確保選擇了正確的(修改后的)配置。

  • 從文件中使緩存無效 > 使緩存無效。
  • 關閉項目。
  • 從intellij 中刪除項目。
  • 從項目的根目錄中刪除.idea文件。
  • 再次打開項目。

這將確保 IntelliJ 選擇將項目字節碼版本更改為 JDK 11。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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