web-dev-qa-db-ja.com

IntelliJ IDEは、リソースでTry-Catchを使用するとエラーになります

私は、JDK 7の「リソースとの試行錯誤」ステートメントを使用しようとしています。 IntelliJは私のリソースラインを強調し、言っています

Try-with-resourcesは、この言語レベルではサポートされていません。

コンパイルしようとすると、次のようになります:

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)を使用していることを確認しました。何か案は?変更するオプションがわかりません(それが問題である場合)。

48
Yankee

[ファイル]メニューをクリックして[プロジェクト構造]を開き、[設定]の下に[プロジェクト]が表示されます。そのタブ内には、使用する言語バージョンを指定するSDK設定オプションがあります。

JetBrainsヘルプページ を参照してください(「プロジェクト言語レベル」)。

52
Jon Skeet

このエラーが発生する唯一の方法は、モジュールの言語レベルが1.7以上に設定されていない場合です。これは、IntelliJプロジェクト/モジュール設定、プロジェクトのpom.xmlファイル、またはその両方。

IntelliJ

enter image description here

Maven

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

モジュール設定はプロジェクト設定を上書きできます。これをプロジェクトレベルで設定していて、モジュールに特定の問題がある場合は、モジュールの設定も確認してください。

50
Dave Newton

言及された指示に加えて、モジュールごとに言語レベルも指定する必要がありました。ファイル->プロジェクト構造->モジュール

9
Ihor Tsebriy

コードも確認してください。誤って次のようなことをした可能性があります。

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

クローズ可能なリソースの結果を使用するつもりがない場合に犯しやすい間違い。まだ誤解を招くエラーがあります。

7

モジュール設定の図的表現。 enter image description here

1
CodeShadow