179

尝试在 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 环境变量设置为此:

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

错误不会消失。如何消除错误?

4

8 回答 8

291

Java 7 support was added at build tools 19. You can now use features like the diamond operator, multi-catch, try-with-resources, strings in switches, etc. Add the following to your 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 plugin 0.6.+ are required.

Note, that only try with resources require minSdkVersion 19. Other features works on previous platforms.

Link to android gradle plugin user guide

Link to see how source vs target are different

于 2013-10-19T19:51:51.060 回答
73

也许上面的这些答案是旧的,但是对于新的 Android Studios 1,您可以执行以下操作以查看要在 1.7(或 1.6,如果您愿意)上运行的模块。单击文件 --> 项目结构。选择要运行的模块,然后在“源兼容性”和“目标兼容性”下,选择 1.7。单击“确定”。

Android Studios 1 的项目结构屏幕

于 2014-12-27T16:52:10.160 回答
14

您可以在新的 Android Studio 版本(0.8.X)中更改它

文件-> 其他设置-> 默认设置-> 编译器(单击左箭头展开)-> Java 编译器-> 您可以在此处更改项目字节码版本

在此处输入图像描述

于 2014-07-31T14:19:23.863 回答
8

最新的 Android Studio 1.4。

点击文件->项目结构->SDK位置->JDK位置。

您还可以通过转到模块(在 SDK 位置下方)设置单个模块的 JDK 版本兼容性,并相应地编辑源兼容性。(注意,这仅适用于 Android 模块)。

于 2015-10-14T06:03:21.680 回答
5

右键单击您的项目>打开模块设置>在“项目设置”部分中选择“项目”

将项目 SDK 更改为最新(可能是 API 21),将项目语言级别更改为 7+

于 2015-03-16T16:24:24.007 回答
4

目前,Android 不支持 Java 7,仅支持 Java 6。因此目前不支持 Java 7 中的新功能,例如菱形语法。找到支持这一点的资源并不容易,但我发现 Dalvic 引擎是建立在Apache Harmony的一个子集之上的,它只支持 Java 到版本 6。如果你检查开发 Android 应用程序的系统要求,它还指出至少需要 JDK 6(尽管这当然不是真正的证据,只是一个指示)。这和说的差不多。如果我发现任何更实质性的东西,我会添加它。

编辑: 自从我最初写这个答案以来,似乎已经添加了 Java 7 支持;检查Sergii Pechenizkyi的答案。

于 2013-07-14T10:39:58.517 回答
2

始终使用最新的 SDK 版本来构建:

compileSdkVersion 23

它不会影响运行时行为,但会为您提供最新的编程功能。

于 2016-06-21T20:04:42.790 回答
2

进入 Gradle 并查找sourceCompatibility并将其从1.6更改为7。这至少对我有用。

您还可以进入模块设置并将源/目标兼容性设置为 1.7。

模块设置窗口

这将在您的 Gradle 中生成以下代码:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
于 2016-11-30T14:53:59.610 回答