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


177

尝试在Android Studio中编译项目时出现以下错误:

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

我在找到的所有项目首选项中都将1.7设置为目标。此外,项目SDK的1.7 SDK下显示的路径也是java 1.7安装的正确路径。

即使我在终端中运行java -version,它也告诉我我正在Java 1.7上运行。

我试图将JAVA_HOME env变量设置为此:

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

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


您是否sourceCompatibility在build.gradle中设置了?
fge13年

在构建工具19中添加了Java 7支持。请检查我编辑过的答案。
2013年

Answers:


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
woohoo的字符串开关!
编码者

10
请注意,try-with-resources只能与API 19或更高版本一起使用。
Alex Lockwood 2014年

73

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

Android Studios 1的项目结构屏幕


5
我猜这是最新android-studio的正确答案。希望我也能提供一个正确的答案
。– pravin

1
这基本上与接受的答案相同。
凯雷姆

1
这只是一项便利功能,它将先前描述的“ compileOptions”代码插入gradle文件中。
user3259330 '02

如何将其设置为8?
霓虹灯Warge'Apr

我看不到1.8和1.9吗?即使“关于->帮助”显示Android Studio正在使用1.8 JRE。
斯里卡·雷迪

14

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

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

在此处输入图片说明


8

最新的Android Studio 1.4。

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

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


此设置令人困惑,因为它会影响所有项目,即使它被命名为“ Project Structure”。
奥利弗·豪斯勒

5

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

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


4

当前,Android不支持Java 7,仅支持Java6。因此,当前不支持Java 7中的新功能,例如菱形语法。寻找支持这一点的来源并不容易,但是我发现Dalvic引擎是基于Apache Harmony的子集构建的,该子集仅支持Java直到版本6。开发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
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.