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

Я пытаюсь использовать оператор JDK 7 "try-catch with resources"; 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). Есть идеи? Я не могу понять, какой вариант изменить (если это даже проблема).

5 ответов

Решение

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

Смотрите страницу помощи JetBrains для более подробной информации ("Уровень языка проекта").

Единственный способ возникновения этой ошибки - это если языковой уровень вашего модуля не установлен на 1,7+. Это должно быть установлено в настройках вашего проекта / модуля IntelliJ, pom.xml файл или оба.

IntelliJ

специалист

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

легкая ошибка, когда вы не собираетесь использовать результат вашего закрытого ресурса. все же у этого будет эта вводящая в заблуждение ошибка.

Наглядное представление настроек модуля.

Другие вопросы по тегам