java - 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 编译器错误想法”
我试过这些设置:
- 在项目结构 -> 项目 -> 项目 SDK 下:1.7
- 项目结构 -> 项目语言级别 -> 7 - Diamonds、ARM、multi-catch 等。
- 在 Project Structure -> Modules 下检查了每个模块,这并不好玩,因为大约有 50 个。Sources 选项卡 -> Language level: Project detaulf (7 - Diamonds, ARM, multi-catch etc.)
- 项目结构 -> 模块,每个依赖项选项卡 -> 模块 SDK:项目 SDK (1.7)
- 项目结构 -> SDKs:它列出了 IDEA 内置于 Java 11,所以我删除了它,只留下:1.7
- 设置 -> Java 编译器 -> 使用编译器:Javac
- 设置 -> Java 编译器 -> 尽可能使用来自模块目标 JDK 的编译器:未勾选
- 设置 -> Java 编译器 -> 每模块字节码版本:所有模块设置为 1.7
我正在运行最新版本的 IntelliJ IDEA:
IntelliJ IDEA 2019.2 (Ultimate Edition) Build #IU-192.5728.98, built on July 23, 2019
这是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 类的编译。
推荐阅读
- java - 是否需要在带有 Spring Boot 的微服务架构项目上使用 ManyToOne/OneToMany 注释?
- excel - Excel 数据透视表计算字段未按预期运行
- python - 非法硬件指令导入 tensorflow。MacBook M1
- ruby - 我无法使用 jekyllrb 从液体中访问页面中的侧变量
- server - 使用 Wireshark 捕获 OPC-UA 数据
- javascript - 如何将 BASE64 转换为 URL?打字稿 - 角度 - 离子
- vue.js - 在 NuxtJs 存储 GraphQL Apollo 客户端中处理身份验证
- r - 如何绘制不同长度的变量=
- rust - 如何在检查其他元素时惯用地迭代可变向量
- reactjs - 从 django API 获取用户数据?