尝试使用此语言级别不支持的资源
Posted
技术标签:
【中文标题】尝试使用此语言级别不支持的资源【英文标题】:Try With Resources Not Supported at This Language Level 【发布时间】:2016-12-22 06:10:35 【问题描述】:我正在使用 IntelliJ IDEA Ultimate 2016.2.1,已将 Project SDK 设置为我的 1.8 版本,将项目语言级别设置为 8,将模块 SDK 设置为我的 1.8 版本,并将 JDK 主路径设置为 /Library/Java/JavaVirtualMachines/jdk1。 8.0_91.jdk/Contents/Home.
我已经重新启动了 IDE。
不过,我收到了关于此语言级别不支持 try-with-resources 的丑陋警告。我没有在 IntelliJ 中使用低于 8 级的语言,所以这不可能是因为某些东西不令人耳目一新。我正在使用 gradle 构建配置 - 清理构建并尝试运行 - 说我正在运行 1.5,但我不知道在哪里提到了 1.5。在 build.gradle 我正在使用:
apply plugin: 'java'
apply plugin: 'application'
sourceCompatibility = 1.8
我应该提交 IntelliJ 错误还是我仍然遗漏了什么?
编辑:
在 IntelliJ 系统之外的 termianl 中运行 gradle 运行良好。所以问题与 IntelliJ 有关。
【问题讨论】:
当我尝试使用 try-with-resources 时,IntelliJ 2018.2 显示“语言级别 '8' 不支持资源引用”。 @PanuHaaramo 如果您提供资源但未将其分配给变量,则会发生这种情况 【参考方案1】:我发现 IntelliJ 有时会将模块默认为与设置的项目 SDK 不匹配的语言级别。尝试右键单击项目资源管理器中的模块并选择模块设置,然后选择语言级别选项卡。如果设置为 Java 5,则将其更新为 Java 8。
【讨论】:
【参考方案2】:确保您的 try-with-resources 使用正确的语义。例如,这个:
try (new BufferedReader(request.getReader()))
会产生同样的错误信息。
【讨论】:
仅供参考:解决方案示例可以是:try ( BufferedReader br = new BuffererdReader ( request.getReader ( ) ) )
【参考方案3】:
嘿@Calicoder 只需尝试将您的 Java 编译器版本更改为 1.7 或 1.8,如下所述
谢谢希望这会有所帮助。
【讨论】:
以上是关于尝试使用此语言级别不支持的资源的主要内容,如果未能解决你的问题,请参考以下文章
此语言级别不支持 try-with-resources - Android
此语言级别不支持 intellij 功能 (...)。我无法编译
使用 Intellij 和 Java ME 的语言级别 '1.4 不支持泛型