【问题标题】:Can't compile with jdk 11 in IntelliJ, cannot find symbol无法在 IntelliJ 中使用 jdk 11 编译,找不到符号
【发布时间】:2019-03-01 19:33:50
【问题描述】:

我设置了 JDK 11,它会一直编译,直到我使用 Java 11 isBlank() 的字符串的新方法,当我使用该方法时,编译时出现此错误,我尝试清理 JDK 安装,从 IntelliJ 清理缓存,重建但没有任何帮助。错误是:

【问题讨论】:

  • 请编辑问题并完全分享图片而不是链接。请告诉我们,您使用的是什么版本的 IntelliJ?
  • @starsuper 您是否设法解决了问题,如果是,如何解决?我遇到了同样的问题,并且一直在努力寻找解决方案 3 天。到目前为止,这里的任何答案都没有导致成功构建。

标签: java intellij-idea java-11


【解决方案1】:

您可以使用 JDK 11 进行编译,但如果您针对较旧版本的 java 进行编译,则无法找到该方法。

转到File > Project Structure -> Project并检查项目语言级别,如下图箭头所示:

不适用于项目语言级别 10:

项目语言级别 11 可以正常工作:

请注意,我有以下 Java 编译器设置(使用 IntelliJ 2018.3 的全新项目的默认设置): 项目字节码版本与语言级别相同!

【讨论】:

  • 使用了问题中的图片javac 11。您如何推断项目级别设置不正确?投反对票。
  • @nullpointer 鉴于 isBlank() 在 Java 11 中是新的,没有将项目语言级别设置为 11 是问题的最可能原因。
  • @nullpointer 我添加了截图来更清楚地展示效果。它显示了与 OP 遇到的相同的错误。
  • 该选项在我的 IDE 中是 beta 版本,因为 2018.3 版本尚未发布,它应该在官方更新出来时修复错误,但目前 caco3 解决方案工作正常。
  • 是的,我使用的是 beta 版本,但是项目语言级别的选项已经可用于几个稳定版本,您指的是哪个选项?
【解决方案2】:

尝试将编译器目标字节码版本设置为 11。

转到Settings - Build, Execution, Deployment - Compiler - Java compiler 并将模块目标字节码版本设置为11

【讨论】:

  • 很好的补充。我已将这些设置的屏幕截图添加到我的答案中,以使其更完整:-)
  • 这只是我在从 1.8 -> 11 更新项目后得到的。当然,只有一个模块受到影响! “主”设置和每个模块设置中的所有内容都设置为项目默认值(即 11)并且从 mvn cli 运行良好 - 不知道这在 intellij 中是如何不同步的。
  • 成功了。谢谢@caco3。需要将11编译器版本应用于项目内的所有模块。
  • 这适用于 IDEA 2020,对于较旧的 IDEA,其他答案有所帮助。
  • 谢谢,这很有帮助。
【解决方案3】:

您应该检查以下事项:

  1. 您已将 JDK11 定义为 SDK 之一:
  2. 您项目的默认 SDK 为 JDK11,您的项目默认语言级别为 11:
  3. 你的模块语言等级也是11。

如果您使用 Maven,请检查您的 pom.xml 中的编译器插件“源”和“目标”属性是否为 11。在这种情况下,您的模块语言级别配置是从 pom.xml 配置导入的

     <properties>
         <maven.compiler.source>11</maven.compiler.source>
         <maven.compiler.target>11</maven.compiler.target>
     </properties>

     <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>

如果您的pom.xml 有错误的源或目标级别,您可能需要执行右键单击 |马文 |更改 pom.xml 后重新导入。如果你使用 Gradle,你应该检查你是否有类似的配置。

  1. 您的模块 SDK 是 Project JDK11 或只是 JDK11

在 IntelliJ IDEA 2018.2.4 中使用 Maven 3.5.4 测试

【讨论】:

  • 请注意,OP 编译错误显示在默认构建选项卡中(使用 IntelliJ 编译)而不是使用 maven。很好的补充,虽然它可能适用于使用 maven 的其他有类似问题的人。
  • 即使您的模块是基于 Maven 的,您仍可以尝试通过 IntelliJ IDEA 本身构建或重建您的项目。
【解决方案4】:

就我而言,它甚至没有在项目语言级别显示 11。所以我不得不像下面的截图一样选择X

【讨论】:

  • 和我的一样。。你知道如何获得 java 11 的项目语言级别吗?
【解决方案5】:

我遇到了类似的问题。 找不到符号 用于 Java 11 功能。虽然一切都已经设置为 11。

解决方案是在我的 Idea 设置中将 Gradle JVM 设置为 JDK 8。(因为我后来添加了 JDK 11)

由于 sourceCompatibiltytargetCompatibility 未在我的 build.gradle 中设置,gradle 守护程序(从 Idea 开始)正在使用 JDK 8 运行和编译。这些属性动态设置为 8(或 1.8)。

Telling Idea 将 Gradle 的 JVM 设置为 11 是我的解决方案:

【讨论】:

  • 终于找到了一个可行的解决方案。关键是改变“Gradle JVM”。其他解决方案均无效。这个问题很久了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
  • 1970-01-01
  • 2019-04-26
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多