首页 > 解决方案 > Intellij 坚持使用 javac 11.0.3 而不是 Java 7 进行编译

问题描述

我有一个包含许多模块的项目,所有模块都需要使用 Java 7 进行编译。我确保我知道的每个设置都指向该版本的 Java,但不知何故,每次我重建项目时都会得到:

Information:javac 11.0.3 was used to compile java sources

后跟错误列表:

Warning:(86, 25) java: as of release 9, '_' is a keyword, and may not be used as an identifier

Error:(86, 25) java: cannot find symbol
  symbol:   class _
  location: class com.(...)`

以下其他问题,例如:

无法解决 IntelliJ 上关于项目语言级别的 -source 错误

IntelliJ IDEA 告诉我“错误:java:编译失败:内部 java 编译器错误想法”

我试过这些设置:

我正在运行最新版本的 IntelliJ IDEA:

IntelliJ IDEA 2019.2 (Ultimate Edition) Build #IU-192.5728.98, built on July 23, 2019

这是IDEA的错误吗?

标签: javaintellij-idea

解决方案


这是 Intellij 选择 java 11 的原因: https ://www.jetbrains.com/help/idea/configuring-build-jdk.html

IntelliJ IDEA 检查项目中使用的所有 JDK:在项目和模块级别上定义的 JDK。

IntelliJ IDEA 计算这些 JDK 中的最新版本。这是确保所有模块都可以编译的必要条件。

如果配置的最新 JDK 版本低于 1.6,IntelliJ IDEA 将选择用于运行 IDE 的 JDK 版本。此限制与 IntelliJ IDEA 用于构建项目的编译器 API 从 JDK 1.6 开始受支持这一事实有关。

这就是为什么将引导 JDK 切换到 JDK8 会重新启用旧 Java 类的编译。


推荐阅读