此语言级别不支持 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 Structure 或 Module Settings 以确保您的 Project SDK 匹配项目语言级别。
Project SDK (JDK) Java 1.5 匹配项目语言级别 5 ...
Java 1.6 匹配语言级别 6 ...
Java 1.7 匹配语言级别 7,依此类推。
示例
根据您的 IntelliJ 版本,在项目窗格中的模块上按 F4 或 Ctrl + 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 不支持泛型