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). Есть идеи? Я не могу понять, какой вариант изменить (если это даже проблема).
Ответы
Ответ 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)))) {
легко сделать ошибку, если вы не собираетесь использовать результат вашего закрываемого ресурса. но он будет иметь эту ошибочную ошибку.