如何在Android Studio和Gradle中设置-source 1.7

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

错误没有消失。我该如何消除错误?


你的 build.gradle 文件中是否设置了 sourceCompatibility - fge
构建工具19已添加了对Java 7的支持。请检查我的编辑后的答案。 - Sergii Pechenizkyi
8个回答

291

从构建工具19开始添加了对Java 7的支持。现在您可以使用钻石操作符、多捕获、try-with-resources、字符串开关等功能。请将以下内容添加到您的 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.+。

请注意,只有使用try with resources需要 minSdkVersion 19。其他特性可在较早的平台上运行。

android gradle插件用户指南链接

查看source和target的不同之处的链接


1
这只能在Android Studio中工作吗?还是可以在使用ADT的Eclipse中实现? - Natix
1
最新的Eclipse ADT可以实现。请在此处查看完整描述:https://sites.google.com/a/android.com/tools/recent/eclipseadt226preview - Sergii Pechenizkyi
7
字符串开关万岁! - coder
10
请注意,使用 try-with-resources 只能在 API 19 或更高版本中使用。 - Alex Lockwood

73

也许以上的答案已经过时了,但是通过新版的Android Studios 1,您可以按照以下步骤来查看在1.7(或者如果您更喜欢的话,1.6)上运行的模块。 点击 文件(File)--> 项目结构(Project Structure)。选择您要运行的模块,然后在"Source Compatibility(源兼容性)"和"Target Compatibility(目标兼容性)"下选择1.7。 点击”确定“。

Android Studios 1 的项目结构屏幕


5
我猜这是最新版Android Studio的正确答案。但愿我也能将这个变成正确答案。 - pravin
1
这本质上与被接受的答案相同。 - Kerem
1
这只是一个方便的功能,它会将先前描述的“compileOptions”代码插入到gradle文件中。 - user3259330
我该如何将它设置为8? - Neon Warge
我看不到1.8和1.9?即使关于->帮助显示Android Studio正在使用1.8 JRE。 - Srikar Reddy

14

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

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

输入图像描述


8

最新的Android Studio版本是1.4。

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

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


这个设置很令人困惑,因为它会影响所有项目,尽管它的名称是“项目结构”。 - Oliver Hausler

5

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

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


4
目前,Android不支持Java 7,仅支持Java 6。因此,Java 7中的新功能(如钻石语法)目前不受支持。 找到支持这一点的来源并不容易,但我可以找到Dalvic引擎是建立在Apache Harmony的一个子集上的,该子集仅支持Java版本6。如果您检查开发Android应用程序的系统要求,它还指出至少需要JDK 6(虽然这当然不是真正的证据,只是一个指示)。这篇文章说的和我差不多。如果我找到更具实质性的东西,我会添加的。 编辑: 看起来自我最初写下这个答案以来已经添加了对Java 7的支持;请查看Sergii Pechenizkyi的答案。

2
这里有一个类似的问题,附带一个链接,介绍如何解决这个问题:https://dev59.com/ZG3Xa4cB1Zd3GeqPgZUb - blalasaadri

2

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

compileSdkVersion 23

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


2
进入您的Gradle,找到sourceCompatibility并将其从1.6更改为7。这对我有效。
您还可以进入模块设置并将Source/Target Compatibility设置为1.7。 模块设置窗口 这将在您的Gradle中生成以下代码:
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

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