Подтвердить что ты не робот

IntelliJ IDE дает ошибку при использовании Try-Catch с ресурсами

Я пытаюсь использовать инструкцию JDK 7 "try-catch with resources"; IntelliJ выделяет мою линию ресурсов, говоря

Попытки с ресурсами не поддерживаются на этом уровне языка.

Когда я пытаюсь скомпилировать, я получаю:

java: try-with-resources не поддерживается в-source 1.6  (используйте источник 7 или более поздней версии, чтобы включить try-with-resources)

Я проверил, что try-with-resources включен для моего текущего проекта, и что в моем проекте используется JDK 7 (Library: C:\Program Files\Java\jdk1.7.0_11). Есть идеи? Я не могу понять, какой вариант изменить (если это даже проблема).

4b9b3361

Ответ 1

Выберите меню "Файл", откройте "Структура проекта", затем в разделе "Настройки" должен быть "Проект". Внутри этой вкладки будет параметр SDK Settings, который указывает версию языка, которую вы хотите использовать.

Подробнее см. справочную страницу JetBrains ( "Уровень языка проекта" ).

Ответ 2

Единственный способ, с помощью которого эта ошибка будет возникать, - это если уровень языка вашего модуля не установлен на 1.7+ и/или если проект Maven, который вы не указываете на уровне источника, равен 1.7 +.

enter image description here

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

Обратите внимание, что настройки модуля могут переопределять настройки проекта; если вы устанавливаете это на уровне проекта, и у вас есть определенная проблема в модуле, проверьте настройки уровня языка модуля.

Ответ 3

Изобразительное представление настроек модуля. введите описание изображения здесь

Ответ 4

Помимо упомянутых инструкций мне также нужно было указать уровень языка для каждого модуля. Файл → Структура проекта → Модули

Ответ 5

Также проверьте свой код. Возможно, вы случайно сделали что-то вроде этого:

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

легко сделать ошибку, если вы не собираетесь использовать результат вашего закрываемого ресурса. но он будет иметь эту ошибочную ошибку.