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: 找不到符号