web-dev-qa-db-ja.com

この言語レベルでは、try-with-resourcesはサポートされていません-Android

Android次の投稿されたコードでは、「リソースでの試用はこの言語レベルではサポートされていません」という問題があります。言語を7に設定しようとしましたが、それでも引き続き同じ例に加えて、言語7に変更するオプションが引き続き表示されます。

public String ReadFile(String fileName) {

    try (BufferedReader br = new BufferedReader(new FileReader(fileName+".txt"))) {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();

        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            line = br.readLine();
        }

        String everything = sb.toString();
        return everything;
    } catch (FileNotFoundException ex) {
        Logger.getLogger(SaveNLoadRank.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(SaveNLoadRank.class.getName()).log(Level.SEVERE, null, ex);
    }
    return "1";
}
24

try-with-resourcesは、minSdkVersionが19以上に設定されている場合にのみサポートされます。

あなたのアプリケーションが19以上の最小APIバージョン(2014年6月)をサポートしているとは思えないので、それが問題である可能性があります。

Java 7言語機能のサポートは、2014年3月にリリースされたSDKツールリビジョン22.6に追加されました( ここを参照 )。ただし、try-with-resourcesは以前のバージョンのAndroidに導入できる機能ではないため、その機能を使用するアプリケーションは19以上で実行する必要があるため、minSdkVersion要件。

[〜#〜] update [〜#〜]任意のAPIでtry-with-resourcesを使用できるようになりました。

上記のJava 8言語機能とAPIに加えて、Android St​​udio 3.0以降では、try-with-resourcesのサポートがすべてのAndroid AP​​Iレベルに拡張されています。

サポートされているJava 8言語機能の使用を開始するには、Androidプラグインを3.0.0(またはそれ以上)に更新します。その後、Java 8言語機能を使用する各モジュール(ソースコードまたは依存関係のいずれか)について、図2に示すように、[プロジェクト構造]ダイアログで[ソース互換性]および[ターゲット互換性]を1.8に更新します(クリックファイル>プロジェクト構造)。

https://developer.Android.com/studio/write/Java8-support.html

41
Bryan Herbst

API 19以下ではサポートされていませんが、15やおそらく14でも機能すると報告されています: https://code.google.com/p/Android/issues/detail?id=7348

2
Joe Bowbeer