42

我正在嘗試使用JDK 7的「try-catch with resources」語句; IntelliJ突出顯示我的資源行,說IntelliJ IDE在使用試用捕獲資源時給出錯誤

嘗試與資源不支持在此語言級別。

當我嘗試編譯,我得到:

的java:嘗試與 - 資源不-source 1.6 (使用-source 7或更高版本支持,使試穿與資源)

我檢查了嘗試,以資源爲我當前的項目已啓用,並且我的計劃是使用JDK 7(庫:C:\ Program Files文件\的Java \ jdk1.7.0_11)。有任何想法嗎?我無法弄清楚要改變什麼選擇(如果這甚至是問題)。

+2

查看文件 - >保護結構(或ctrl-alt-shift s),將jdk以及語言級別都設置爲7 –

+0

謝謝,這很有效。 – Yankee

回答

50

點擊文件菜單,打開項目結構,然後在「設置」下應該有「項目」。在該選項卡中,將會有一個SDK Settings選項,它指定您要使用的語言版本。

有關更多詳細信息,請參見JetBrains help page(「項目語言級別」)。

47

發生此錯誤的唯一方法是,如果您的模塊的語言級別未設置爲1.7+以及/或者它是否表示源級別爲1.7+以上的Maven項目。

enter image description here

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

注意,模塊設置可以覆蓋項目設置;如果在項目級設置此項,並且模塊中存在特定問題,請檢查模塊語言級別設置。

+0

這在AS 0.3.4及以上版本中不再有效。 – Adam

+1

@Adam Android Studio?基於Intellij beta版的那個?什麼具體是無效的?儘管沒有人談論Android開發,但提供可操作的信息不是更有意義嗎? –

+0

這就是我遇到這個問題的原因。 – conorgriffin

1

除了提到的說明,我還必須指定每個模塊的語言級別。文件 - >項目結構 - >模塊

+0

謝謝我也必須這樣做,您是救命 –

1

另請檢查您的代碼。你可能不小心做了這樣的事情:的

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)))) { 

容易犯的錯誤,當你不使用你的資源可關閉的結果打算。但它會產生誤導性的錯誤。