java intellij-idea try-catch try-catch-finally try-with-resources

java - IntelliJ IDE da error al usar Try-Catch con recursos



intellij-idea try-catch-finally (5)

Además de las instrucciones mencionadas, también tuve que especificar el nivel de idioma por módulo. Archivo -> Estructura del proyecto -> Módulos

Intento utilizar la declaración "try-catch with resources" de JDK 7; IntelliJ destaca mi línea de recursos, diciendo

Try-with-resources no son compatibles en este nivel de idioma.

Cuando intento compilar, obtengo:

java: try-with-resources no es compatible con -source 1.6 (use -source 7 o superior para habilitar try-with-resources)

Comprobé que try-with-resources está habilitado para mi proyecto actual y que mi proyecto está utilizando JDK 7 (Library: C: / Program Files / Java / jdk1.7.0_11). ¿Algunas ideas? No puedo imaginar qué opción cambiar (si ese es el problema).


Haga clic en el menú Archivo, abra Estructura del proyecto, luego en "Configuración" debería haber "Proyecto". Dentro de esa pestaña, habrá una opción de configuración de SDK que especifica la versión del idioma que desea usar.

Consulte la página de ayuda de JetBrains para obtener más detalles ("Nivel de idioma del proyecto").


La única forma en que se producirá este error es si el nivel de idioma de su módulo no está configurado en 1.7+ y / o si es un proyecto de Maven, no indica que el nivel de origen es 1.7+.

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

Tenga en cuenta que la configuración del módulo puede anular la configuración del proyecto; si establece esto en el nivel de proyecto y tiene un problema específico en un módulo, verifique también la configuración del nivel de idioma del módulo.


Representación pictórica de la configuración del módulo.


También revisa tu código. Es posible que haya hecho algo como esto accidentalmente:

try (HttpClients.createMinimal().execute(new HttpGet(String.format( "http://127.0.0.1:%s/extra/LifecycleServlet?action=shutdown", runningPort)))) {

en lugar de

try (CloseableHttpResponse response = HttpClients.createMinimal().execute(new HttpGet(String.format( "http://127.0.0.1:%s/extra/LifecycleServlet?action=shutdown", runningPort)))) {

error fácil de realizar cuando no tiene la intención de utilizar el resultado de su recurso de cierre. sin embargo, tendrá ese error engañoso.