【问题标题】:intelliJ cannot find a specific methodIntelliJ 找不到特定的方法
【发布时间】: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 依赖项

【问题讨论】:

    标签: java intellij-idea


    【解决方案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。

          【讨论】:

            猜你喜欢
            • 2023-04-08
            • 1970-01-01
            • 2022-07-27
            • 1970-01-01
            • 1970-01-01
            • 2012-03-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多