IntelliJ IDEA 中的项目语言级别是啥?

Posted

技术标签:

【中文标题】IntelliJ IDEA 中的项目语言级别是啥?【英文标题】:What is Project Language level in IntelliJ IDEA?IntelliJ IDEA 中的项目语言级别是什么? 【发布时间】:2013-07-16 21:06:26 【问题描述】:

我正在使用 Java 7 SDK 和 IntelliJ IDEA IDE。

java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)

我仍然无法使用 Java 7 功能。经过一番谷歌搜索后,我可以在将项目语言级别设置为7(Diamond, ARM, multicatch etc) 后使用所有功能。这究竟是什么?如果这与使用中基于 JDK 的语法有某种关系,那么 level 8(Lambda, annotations etc) 是什么? Java 8 尚未发布。根据 Wiki,Java 8 预计将于 2014 年 3 月发布。请有人解释一下这个语言级别的概念。

【问题讨论】:

【参考方案1】:

根据IntelliJ Wiki探索常规项目设置部分中的文档,项目语言级别会影响 IDE 提供的智能感知。

它还规定了 IntelliJ 在开发时编译 Java 代码时使用的编译器的行为。

此设置告诉编译器的所有可用于项目的工具。例如将语言级别设置为 JDK 5 将允许 IntelliJ 识别源代码中存在的关键字,例如 enum

【讨论】:

【参考方案2】:

Language level 设置设置了编辑器中应支持的代码辅助功能。例如,如果您使用的是 JDK 1.7,但希望您的代码与 JDK 1.6 兼容,则可以将语言级别设置为低于实际 JDK 支持的语言级别(JDK 1.6 为 6.0)并且只获得重构/语法建议支持 1.6 及更低版本。根据您的编译器,它还可能为编译器提供删除对较新语法元素的支持的选项。

8.0(正如您猜测的那样,对应于 Java 8)可供想要尝试可用的Java 8 snapshots 之一的人使用。由于 Java 8 尚未发布,因此语言级别 8.0 很可能会在发布前发生变化。

【讨论】:

那么这些设置是设置编辑器中的代码辅助应支持嵌入 IDE 中的哪些功能,还是通过网络获取更新? @AniketThakur 似乎是随着IDE本身更新的,至少我从来没有注意到没有随着IDE更新而发生的变化。 通过File > Project Structure > Project > Project language level设置语言级别 @Mikhail 我假设JDK 9 snapshot versions。 我已经拥有正确的项目语言杠杆,但编辑一直抱怨它是这样的:File > Project Structure > Module (sources tab)> language level【参考方案3】:

如果您查看options for the javac Java compiler command,您会看到-source-target 选项允许您针对Java 的替代版本进行编译。我不确定 IntelliJ 的语言级别设置对应于哪个选项(可能是 -source),但它本质上是告诉 IntelliJ 在指定的 Java 语言版本中使用提供的 Java SDK(在 Project SDK 字段中)而不是由上述 SDK 提供的最新版本。

因此,当您安装了 Java 7 时,您可以将语言级别设置为 6.0,IntelliJ 将根据 Java 6 规范而不是 Java 7 规范编译您的代码。这包括在您键入时完成的所有实时建议和代码检查。

Java 8 选项之所以存在,可能是因为 Java 8 的 beta 版本可用于测试。

我从未尝试过如果将语言级别设置为高于 JDK 版本会发生什么。

【讨论】:

在我的例子中,如果你将语言级别设置为高于 JDK 版本,你会得到一个错误。错误:加载主类com.practice.Main java.lang.UnsupportedClassVersionError时发生LinkageError:JVMCFRE003 bad major version; class=com/practice/Main,偏移量=6

以上是关于IntelliJ IDEA 中的项目语言级别是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Intellij IDEA 设置:无法解析符号 println

Intellij IDEA 2018.1 Jdk10 无法运行测试

如果 pom.xml 不在根级别,我如何将 maven 项目添加到 intellij idea 中

IntelliJ idea下的项目结构

IntelliJ idea下的项目结构

IntelliJ IDEA的后退快捷键是啥?