使用资源Try-Catch时IntelliJ IDE给出错误

我正在尝试使用JDK 7的“try-catch with resources”语句; IntelliJ强调我的资源线,说

此语言级别不支持“试用资源”。

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

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

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

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

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

这个错误发生的唯一方法是如果你的模块的语言级别没有设置为1.7+,或者如果它是一个Maven项目,你没有指出源级别是1.7+。

在这里输入图像说明

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

请注意,模块设置可以覆盖项目设置; 如果在项目级别进行设置,并且在模块中存在特定问题,请检查模块语言级别设置。

模块设置的图示。 在这里输入图像说明

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

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

 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)))) { 

当你不打算使用可closures资源的结果时,容易犯错误。 但它会有误导性的错误。