42

Ich versuche, JDK 7 "try-Catch mit Ressourcen" -Anweisung zu verwenden; IntelliJ hebt meine Ressourcenzeile hervor und sagtIntelliJ IDE gibt Fehler bei der Verwendung von Try-Catch mit Ressourcen

Try-with-Ressourcen werden auf dieser Sprachebene nicht unterstützt.

Wenn ich zu kompilieren versuchen, erhalte ich:

java: try-with-Ressourcen nicht in -source 1.6 (Verwendung -source 7 oder höher unterstützt Try-with-Ressourcen zu ermöglichen)

überprüfte ich, dass Try-with-Ressourcen für ein aktuelles Projekt aktiviert ist, und dass mein Projekt mit JDK 7 (Library: C: \ Programme \ Java \ jdk1.7.0_11). Irgendwelche Ideen? Ich kann nicht herausfinden, welche Option geändert werden kann (wenn das sogar das Problem ist).

+2

in Datei suchen -> Struktur (oder Strg-Alt-Verschiebung s) zu schützen, dass sowohl die jdk als auch die Sprachlevel auf 7 gesetzt sind –

+0

Danke, das hat funktioniert. – Yankee

Antwort

50

Klicken Sie auf das Menü Datei, öffnen Sie die Projektstruktur und dann unter "Einstellungen" sollte "Projekt" sein. Auf dieser Registerkarte wird eine SDK-Einstellungen-Option angezeigt, die die zu verwendende Sprachversion angibt.

Weitere Einzelheiten finden Sie unter JetBrains help page ("Projektsprachenebene").

47

Dieser Fehler kann nur auftreten, wenn der Sprachlevel des Moduls nicht auf 1,7+ eingestellt ist und/oder wenn es sich um ein Maven-Projekt handelt, das nicht angibt, dass der Quelllevel 1,7+ ist.

enter image description here

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

Beachten Sie, dass Moduleinstellungen Projekteinstellungen außer Kraft setzen kann; Wenn Sie dies auf Projektebene festlegen und ein bestimmtes Problem in einem Modul vorliegt, überprüfen Sie auch die Modulspracheneinstellungen.

+0

Dies gilt ab AS 0.3.4 nicht mehr. – Adam

+1

@Adam Android Studio? Der auf der Intellij-Beta basierende? Was speziell ist nicht gültig? Wäre es nicht sinnvoller, umsetzbare Informationen bereitzustellen, obwohl niemand über Android-Entwicklung sprach? –

+0

Das war der Grund, warum ich dieses Problem hatte. – conorgriffin

0

Bildliche Darstellung der Moduleinstellungen. enter image description here

1

Neben den genannten Anweisungen musste ich auch den Sprachlevel pro Modul angeben. Datei -> Projektstruktur -> Module

+0

Danke ich musste es auch tun, du bist ein Lebensretter –

1

Überprüfen Sie auch Ihren Code. Sie könnten versehentlich etwas wie dies getan haben:

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

statt

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

leicht Fehler zu machen, wenn Sie mit dem Ergebnis Ihrer verschließbare Ressource nicht beabsichtigen. aber es wird diesen irreführenden Fehler haben.