50

我正在尝试使用 JDK 7 的“try-catch with resources”语句;IntelliJ 突出显示我的资源行,说

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

当我尝试编译时,我得到:

java:-source 1.6 不支持 try-with-resources(使用 -source 7 或更高版本来启用 try-with-resources)

我检查了我当前的项目是否启用了 try-with-resources,并且我的项目正在使用 JDK 7(库:C:\Program Files\Java\jdk1.7.0_11)。有任何想法吗?我不知道要改变什么选项(如果这甚至是问题的话)。

4

5 回答 5

53

单击文件菜单,打开项目结构,然后在“设置”下应该有“项目”。在该选项卡中,将有一个 SDK 设置选项,用于指定您要使用的语言版本。

有关更多详细信息,请参阅JetBrains 帮助页面(“项目语言级别”)。

于 2013-01-22T13:51:49.393 回答
53

发生此错误的唯一方法是您的模块的语言级别未设置为 1.7+。这需要在您的 IntelliJ 项目/模块设置、项目pom.xml文件或两者中进行设置。

智能

在此处输入图像描述

马文

<properties>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>

模块设置可以覆盖项目设置;如果在项目级别设置此设置并且您在模块中遇到特定问题,请同时检查模块设置。

于 2013-01-22T13:56:18.583 回答
11

除了提到的说明之外,我还必须指定每个模块的语言级别。文件 -> 项目结构 -> 模块

于 2017-07-10T14:09:25.323 回答
8

还要检查你的代码。你可能不小心做了这样的事情:

try (HttpClients.createMinimal().execute(new HttpGet(String.format(
          "http://127.0.0.1:%s/extra/LifecycleServlet?action=shutdown",
          runningPort)))) {

代替

try (CloseableHttpResponse response = HttpClients.createMinimal().execute(new HttpGet(String.format(
          "http://127.0.0.1:%s/extra/LifecycleServlet?action=shutdown",
          runningPort)))) {

当您不打算使用可关闭资源的结果时,很容易犯错误。但是它会有那个误导性的错误。

于 2017-09-08T02:38:50.130 回答
3

模块设置的图示。 在此处输入图像描述

于 2017-03-16T03:04:33.163 回答