J'essaie d'utiliser l'instruction "try-catch with resources" de JDK 7; IntelliJ met en évidence ma ligne de ressources, en disant
Les ressources d'essai ne sont pas prises en charge à ce niveau de langue.
Lorsque j'essaye de compiler, j'obtiens:
Java: try-with-resources n'est pas pris en charge dans -source 1.6 (utilisez -source 7 ou supérieur pour activer try-with-resources)
J'ai vérifié que l'essai avec des ressources est activé pour mon projet actuel et que mon projet utilise JDK 7 (bibliothèque: C:\Program Files\Java\jdk1.7.0_11). Des idées? Je ne peux pas comprendre quelle option changer (si c'est même le problème).
Cliquez sur le menu Fichier, ouvrez Structure du projet, puis sous "Paramètres" il devrait y avoir "Projet". Dans cet onglet, il y aura une option Paramètres du SDK qui spécifie la version linguistique que vous souhaitez utiliser.
Voir page d'aide JetBrains pour plus de détails ("Niveau de langue du projet").
La seule façon dont cette erreur se produira est si le niveau de langue de votre module n'est pas défini sur 1.7+. Cela doit être défini dans les paramètres de votre projet/module IntelliJ, le pom.xml
fichier, ou les deux.
IntelliJ
Maven
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
Les paramètres du module peuvent remplacer les paramètres du projet; si vous le définissez au niveau du projet et que vous rencontrez un problème spécifique dans un module, vérifiez également les paramètres du module.
Outre les instructions mentionnées, j'ai également dû spécifier le niveau de langue par module. Fichier -> Structure du projet -> Modules
Vérifiez également votre code. Vous pourriez avoir accidentellement fait quelque chose comme ça:
try (HttpClients.createMinimal().execute(new HttpGet(String.format(
"http://127.0.0.1:%s/extra/LifecycleServlet?action=shutdown",
runningPort)))) {
au lieu de
try (CloseableHttpResponse response = HttpClients.createMinimal().execute(new HttpGet(String.format(
"http://127.0.0.1:%s/extra/LifecycleServlet?action=shutdown",
runningPort)))) {
erreur facile à faire lorsque vous n'avez pas l'intention d'utiliser le résultat de votre ressource pouvant être fermée. mais il aura cette erreur trompeuse.