IntelliJ 找不到特定的方法

Posted

技术标签:

【中文标题】IntelliJ 找不到特定的方法【英文标题】:intelliJ cannot find a specific method 【发布时间】:2019-09-22 14:05:43 【问题描述】:

我在以下代码中遇到编译错误,我不知道如何修复。

 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

有很多事情需要注意。

这只发生在readString(Path) 中的java.nio.file.Files。如果我尝试size(Path)java.nio.file.Files 中的另一种方法),它可以工作

此代码在 intelliJ 中无效,但在 eclipse 中有效

如果我在 intelliJ 中创建一个新项目,但在我从 github 克隆的当前 Maven 项目中创建一个新项目,则此代码有效

我已经尝试了here 的所有建议,包括:

构建 > 重建项目 只重新编译Test.java 文件 > 使缓存无效 检查 /src 文件夹标记为源文件夹 重新导入 Maven 依赖项

【问题讨论】:

【参考方案1】:

正如 Axel 的回答所指出的,问题确实与 Java 版本有关,但不是 SDK 或语言级别。

解决这个问题的方法是转到文件 > 设置 > 构建 > 编译器 > Java 编译器。然后,我将项目字节码版本更改为 11,并删除了设置为 10 的每个模块字节码版本条目。

请注意,如果此错误一直发生在您身上,这可能是因为您的 pom.xml 中未指定源和目标版本。更多详情请见this question

【讨论】:

【参考方案2】:

Files.readString(Path) 是在 Java 11 中引入的。您的安装似乎仍在 Java 8 上。

首先通过在 Project Settings/Project 下设置正确的 SDK 和语言级别来确保您的项目使用 Java 11。

如果这不起作用,请确保您已安装 IntelliJ 的 JDK 11 版本。点击IntelliJ download page上下载按钮右侧的小向下角,可以在IntelliJ下载页面选择JDK 8和JDK 11版本。

【讨论】:

【参考方案3】:

与 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-plugin 中添加了 configuration 部分。如果您没有这部分(例如,您使用 spring boot run),请将其添加到您的 pom.xml plugins 区域中。

【讨论】:

【参考方案4】:

在更改了@Lindstorm 提到的项目字节码版本后,intelliJ 在编译时仍然显示错误。我执行了以下操作以确保选择正确的(修改后的)配置。

从文件中使缓存失效 > 使缓存失效。 关闭项目。 从 intellij 中删除项目。 从项目的根目录中删除.idea 文件。 再次打开项目。

这将确保 IntelliJ 选择将项目字节码版本更改为 JDK 11。

【讨论】:

以上是关于IntelliJ 找不到特定的方法的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 编译代码报错 找不到符号 符号: 找不到符号包 包

IntelliJ IDEA 编译代码报错 找不到符号 符号: 找不到符号包 包

为啥 IntelliJ 找不到正确的 WebServlet 类?

IntelliJ IDEA - Lombok 报错 Java: 找不到符号

Thymeleaf:Intellij 上的“找不到要前往的声明”错误

修复 IntelliJ IDEA 中 Cucumber 6.8.1运行找不到类的问题