此语言级别不支持 intellij 功能 (...)。我无法编译

Posted

技术标签:

【中文标题】此语言级别不支持 intellij 功能 (...)。我无法编译【英文标题】:intellij feature (...) not supported at this language level. I can't compile 【发布时间】:2016-05-05 06:23:03 【问题描述】:

IntelliJ 正在向我展示 this error

我刚刚构建了我的新计算机,但我的 java 东西都没有工作...当我第一次尝试时,我的常规 Intellij 工作正常,但我的 android studio 无法安装,因为它找不到 jdk 的路径. Here 是我提出的问题。由于那不起作用,我不得不多次重新安装 java,现在我的 IntelliJ 无法正常工作。这是错误的图片(我收到一个错误,告诉我此语言级别不支持 for-each 循环)。

我尝试在我的 D: 驱动器上安装 JDK,但没有成功。我目前正在尝试使用 java 1.8u71(已尝试过 u65 和 1.7u47),但这些都不起作用。

【问题讨论】:

项目的编译器设置是什么? 按 alt+enter 并单击 intellij 建议的第一个修复程序! 【参考方案1】:

IntelliJ 显示此错误

将 SDK/JDK 与项目语言级别匹配

要在编辑器中激活 Java 语言功能,您需要更改模块的 Project StructureModule Settings 以确保您的 Project SDK 匹配项目语言级别

Project SDK (JDK) Java 1.5 匹配项目语言级别 5 ...

Java 1.6 匹配语言级别 6 ...

Java 1.7 匹配语言级别 7,依此类推。

示例

根据您的 IntelliJ 版本,在项目窗格中的模块上按 F4Ctrl + Alt + Shift - S,或按 Ctrl + Shift - A 并键入“项目结构”或“模块设置”以打开“项目结构”对话框。

项目设置部分下,单击列表中的第一项项目

在下面的屏幕截图中,项目 SDK 1.8 (java version '1.8.0_72') 与所选语言级别 SDK Default (8 - Lambdas, type annotations etc.) 匹配,因为 Java 1.8 与 SDK 级别 8 匹配。这将激活 Java 8 语言功能以在编辑器中使用。

如果您没有在Project SDK 下设置JDK,那就是另一个问题了。首先通过单击New 并添加一个JDK 来解决这个问题。

【讨论】:

我必须转到“项目结构”-> 模块->“源”选项卡并在“源”选项卡中更改“语言级别”。【参考方案2】:

当我在项目中有多个独立模块时,除了@activedecay's answer之外,我还必须进行以下设置: 在Project Settings 下,单击Modules。选择特定模块。选择合适的Language Level

【讨论】:

好的,这对我有帮助。我觉得 IntelliJ 默认使用 Java 1.5 很荒谬。 这对我有用。谢谢男人【参考方案3】:

我遇到了同样的问题,但我找到的解决方案都没有奏效。

我正在使用 Maven 项目,因此决定尝试运行 maven install。它也说:

[ERROR]  thefile.java:[24,77] diamond operator is not supported in -source 1.5
[ERROR] (use -source 7 or higher to enable diamond operator)
[ERROR] theFile.java:[91,62] lambda expressions are not supported in -source 1.5
[ERROR] (use -source 8 or higher to enable lambda expressions)

所以我将属性添加到 Maven 构建 pom.xml 文件中:

<properties>
    <spring.version>4.1.6.RELEASE</spring.version>
    <java.version>1.8</java.version>
    <maven.compiler.source>$java.version</maven.compiler.source>
    <maven.compiler.target>$java.version</maven.compiler.target>
</properties>

并刷新了 IntelliJ 中的 Maven 项目。成功了!

【讨论】:

我最终只是在 cli 上通过 mvn 运行...... Intelij 只是不适合这个。【参考方案4】:

我也遇到了同样的问题。

当我通过接口名称访问接口的静态方法时,我收到错误提示

此语言级别 5 不支持静态接口方法调用

由于这是 Java 1.8,我检查了一些东西:

    我正在使用 Intellij。因此,通过执行 CTRL+ALT+SHIFT+S 项目结构对话框打开,转到

    项目 -> 项目语言级别

    将此设置为 SDK 默认值(8-Lambdas、类型注释等)。

    在项目结构中打开

    模块 -> 来源 -> 语言级别

    将此设置为项目默认值(8-Lambdas、类型注释等)。

    应用->确定。

然后错误就会消失。

【讨论】:

【参考方案5】:

让我在一张图片中说明解决方案。

文件 -> 项目结构 -> 模块 -> 属性选项卡 -> 源代码兼容性 (Java 8)

【讨论】:

【参考方案6】:

在 Gradle 项目中导致此错误的另一个问题是 build.gradle 文件中的 sourceCompatibility 设置。这也必须与您期望需要的值相匹配。我看到 IntelliJ 在创建新的 Gradle 项目时使用的默认值是 1.5。例如,如果您使用 lambda,这将导致构建失败。

【讨论】:

以上是关于此语言级别不支持 intellij 功能 (...)。我无法编译的主要内容,如果未能解决你的问题,请参考以下文章

使用 Intellij 和 Java ME 的语言级别 '1.4 不支持泛型

无法在 IntelliJ 中定义多捕获

尝试使用此语言级别不支持的资源

此语言级别不支持 try-with-resources - Android

此语言级别不支持 Lambda 表达式 [重复]

带有 Android SDK 的 intellij:-source 1.7 中不支持 lambda 表达式