智能找不到特定的方法

时间:2019-05-04 05:28:50

标签: java intellij-idea

以下代码中出现编译错误,我不知道如何解决。

 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依赖项

4 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

问题确实与Java版本有关,但与SDK或语言级别无关。

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

答案 3 :(得分:0)

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

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

这将确保 IntelliJ 选择将 Project Bytecode Version 更改为 JDK 11。