2016-08-07 5 views
0

Androidスタジオがインストールされていて、Jdk 1.7と1.8の両方がインストールされています。アプリケーションを実行すると、Jdk 1.8で実行する必要があるというエラーが表示されました。ファイル>>プロジェクト構造に移行し、jdk versioのパスをjdk 1.8に変更しました。ただし、OKをクリックすると、 1.7。今度は再びプロジェクト構造を開くと、JDkのバージョンは再び1.7にリセットされます。アンドロイドスタジオでJdkのバージョンが自動的に1.7にリセットされます

私のJAVA_HOMEシステム変数がjdk 1.8パスに設定されています。私はAndroid Studioをアンインストールして再インストールしましたが、何も機能しませんでした。

+1

アンドロイドは(まだ)は、Java 8をサポートしていません。 –

答えて

0

build.gradleには、JDK 1.8を強制するcompileOptionsタグも含まれています。

Java 8の機能を利用するには、Jackコンパイラも有効にする必要があります。

android { 
    ... 
    defaultConfig { 
    ... 
    jackOptions { 
     enabled true 
    } 
    } 
    compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_8 
    targetCompatibility JavaVersion.VERSION_1_8 
    } 
} 

ここにAndroid上で利用可能のJava 8つの機能にGoogleのページを参照してください:特定の機能は、ジャック・コンパイラを使用してJava 8の下ではサポートされていないことに注意してください、またhttps://developer.android.com/preview/j8-jack.html

。最大のものの1つは、少なくとも注釈プロセッサを備えたTransform APIです。自分や好きなライブラリがTransform APIを使用している場合は、Jackを無効にし、ライブラリを使用してRetrolambdaなどのJava 8機能を使用できます。

はRetroLambdaの詳細についてはこちらをご覧ください:https://github.com/evant/gradle-retrolambda

+0

私はこれを試しました。しかし、アプリケーションを実行すると、グラデルは永遠に構築されます。コンソールが停止しています:app:compileDebugJavaWithJack –

+0

そして、12分後にエラー:「タスク: 'app:compileDebugJavaWithJack」の実行に失敗しました。 > java.lang.RuntimeException:java.lang.OutOfMemoryError:GCオーバーヘッドの上限を超えました –

+0

これはJackです。まだベータ版ですが、数ヶ月前に試してみましたが、それはまさに私に起こったことです。サードパーティのライブラリを使用してJava 8の機能を移植してから、それがprimetimeの時にジャックに切り替えることをお勧めします。 – Darrien

関連する問題