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)))) {
легкая ошибка, когда вы не собираетесь использовать результат вашего закрытого ресурса. все же у этого будет эта вводящая в заблуждение ошибка.