【问题标题】: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 如果您提供资源但未将其分配给变量,则会发生这种情况

标签: java intellij-idea gradle try-with-resources


【解决方案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,如下所述

    谢谢希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-10-15
      • 2014-08-09
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多