Android StudioとGradleで-source 1.7を設定する方法


177

Android Studioでプロジェクトをコンパイルしようとすると、次のエラーが発生します。

Gradle: error: diamond operator is not supported in -source 1.6

私は見つけたすべてのプロジェクト設定で1.7をターゲットとして設定しています。また、1.7 SDKの下のプロジェクトSDKに表示されるパスは、Java 1.7インストールへの正しいパスです。

ターミナルでjava -versionを実行しても、Java 1.7で実行していることがわかります。

JAVA_HOME env変数をこれに設定しようとしました:

/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

エラーは解消されません。エラーを解消するにはどうすればよいですか?


sourceCompatibilitybuild.gradle を設定しましたか?
2013

ビルドツール19でJava 7のサポートが追加されました。編集した回答を確認してください。
セルギーペチェニツキ2013年

回答:


289

ビルドツール19でJava 7のサポートが追加されました。ダイヤモンドオペレーター、マルチキャッチ、リソースでの試行、スイッチ内の文字列などの機能を使用できるようになりましたbuild.gradle。以下にを追加します。

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 19
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

Gradle 1.7以降、Android Gradleプラグイン0.6以降が必要です。

リソースのみを試すにはminSdkVersion19が必要です。他の機能は以前のプラットフォームで動作します。

Android Gradleプラグインユーザーガイドへのリンク

ソースとターゲットの違いを確認するためのリンク


1
これはAndroid Studioでのみ機能しますか、またはADTを使用してEclipseでも機能させることはできますか?
Natix 2014年

1
最新のADT for Eclipseで可能です。ここでは完全な説明を確認してください:sites.google.com/a/android.com/tools/recent/...
セルギPechenizkyi

7
ストリングスイッチ用のウーフー!
コーダー

10
try-with-resourcesはAPI 19以降でのみ使用できることに注意してください。
Alex Lockwood 2014年

73

上記の回答は古いかもしれませんが、新しいAndroid Studios 1では、次のようにしてモジュールを1.7(または1.6で実行)で実行することを確認します。「ファイル」->「プロジェクト構造」をクリックします。実行するモジュールを選択し、[ソースの互換性]と[ターゲットの互換性]で1.7を選択します。「OK」をクリックします。

Android Studiosのプロジェクト構造画面1


5
これは最新のandroid-studioの正解だと思います。..私もこの正解作ることができることを望む
pravin

1
これは基本的に、受け入れられた回答と同じです。
ケレム2015

1
これは単なる便利な機能であり、前述の「compileOptions」コードをgradleファイルに挿入します。
user3259330 2016

どうすればこれを8に設定できますか?
ネオンワージ2017

1.8と1.9が表示されません。バージョン情報->ヘルプには、Androidスタジオで1.8 JREが使用されていると記載されていますが、
Srikar Reddy

14

新しいAndroidスタジオバージョン(0.8.X)で変更できます

ファイル->その他の設定->デフォルト設定->コンパイラ(左矢印をクリックして展開)-> Javaコンパイラ->プロジェクトのバイトコードバージョンをここで変更できます

ここに画像の説明を入力してください


8

最新のAndroid Studio 1.4。

「ファイル」->「プロジェクト構造」->「SDKの場所」->「JDKの場所」をクリックします。

モジュール(SDKの場所の下)に移動して個々のモジュールのJDKバージョンの互換性を設定し、それに応じてソースの互換性を編集することもできます。(注、これはAndroidモジュールにのみ適用されます)。


この設定は、「プロジェクト構造」という名前が付けられていても、すべてのプロジェクトに影響を与えるため、混乱を招きます。
Oliver Hausler 2016

5

プロジェクトを右クリック>モジュール設定を開く>「プロジェクト設定」セクションで「プロジェクト」を選択

Project SDKを最新(API 21の可能性があります)に変更し、プロジェクトの言語レベルを7+に変更します


4

現在、AndroidはJava 7をサポートしておらず、Java 6のみをサポートしています。そのため、ダイヤモンド構文などのJava 7の新機能は現在サポートされていません。これをサポートするソースを見つけるのは簡単ではありませんが、Dalvicエンジンは、バージョン6までのJavaしかサポートしていなかったApache Harmonyのサブセットに基づいていることがわかります。Androidアプリを開発するためのシステム要件を確認すると、少なくともJDK 6が必要です(もちろんこれは実際の証拠ではなく、単なる目安です)。そして、これは私が持っているものとほとんど同じです。さらに実質的なものが見つかれば、追加します。

編集: 私が最初にこの回答を書いて以来、Java 7のサポートが追加されているようです。Sergii Pechenizkyiの回答を確認してください。


2
ここでは、この問題を克服する方法についてのリンクと同様の質問:stackoverflow.com/questions/14487682/...
blalasaadri

2

ビルドには常に最新のSDKバージョンを使用します。

compileSdkVersion 23

ランタイムの動作は影響ませんが、最新のプログラミング機能を提供します。


2

Gradleに移動してsourceCompatibilityを探し、1.6から7に変更します。それは少なくとも私にとってはうまくいった。

モジュール設定に移動して、ソース/ターゲットの互換性を1.7に設定することもできます。

モジュール設定ウィンドウ

これにより、Gradleに次のコードが生成されます。

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.