如何在Android Studio中使用Java 8编译项目?

3
我正在尝试使用Java 8编译一个项目。如下图所示,我已经设置了正确的JDK: JDK location 我也更改了目标版本: Target version 但是我仍然遇到以下错误:compileSdkVersion 'android-24'需要JDK 1.8或更新版本才能编译。
我错在哪里?注意:我使用的是Ubuntu 12.04操作系统。

你的JDK路径应该更加具体。在Mac上,我有jdk1.8.0_92.jdk/Contents/Home - Juan Cruz Soler
@JuanCruzSoler 我的路径是正确的,因为我正在运行Ubuntu。 - Eric
可能是重复问题 是否可以在Android开发中使用Java 8? - Zoe stands with Ukraine
2个回答

8

当需要进行JDK设置时,您可以:

在“android app”模块的build.gradle文件中添加。

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

gradle.properties中设置sdk路径

org.gradle.java.home=/path_to_java_sdk_8/jdk1.8

还要检查 .idea/modules/compiler.xml 是否与 1.7/1.8 兼容。

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
      ...
    <bytecodeTargetLevel target="1.8">
      <module name="app" target="1.7" />
    </bytecodeTargetLevel>
  </component>

以及 misc.xml

<?xml version="1.0" encoding="UTF-8"?>
  <project version="4">
    ....
   <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" 
              default="false" assert-keyword="true" 
              jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/classes" />
  </component>
  <component name="ProjectType">
    <option name="id" value="Android" />
  </component>
 </project>

顺便提一下:如果你想编译Java 1.8版本,你需要使用"jack"。请参见https://source.android.com/source/jack.html


将org.gradle.java.home=/path_to_java_sdk_8/jdk1.8设置好就行了!谢谢! - Eric
@Eric - 很高兴我能帮到你 - 如果您能点赞就更好了 :) - ceph3us

3
android {
    compileSdkVersion 28
    buildToolsVersion = '28.0.3'
    defaultConfig {
        applicationId "your package name"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接