【问题标题】:How to set -source 1.7 in Android Studio and Gradle如何在 Android Studio 和 Gradle 中设置 -source 1.7
【发布时间】:2013-07-12 07:27:01
【问题描述】:

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

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

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

【问题讨论】:

  • 你的 build.gradle 中是否设置了 sourceCompatibility
  • 在构建工具 19 中添加了 Java 7 支持。请检查我编辑的答案。

标签: java intellij-idea gradle android-studio java-7


【解决方案1】:

在构建工具 19 中添加了 Java 7 支持。您现在可以使用菱形运算符、multi-catch、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.+。

请注意,仅尝试使用资源需要minSdkVersion 19。其他功能适用于以前的平台。

Link to android gradle plugin user guide

Link to see how source vs target are different

【讨论】:

  • 这只能在 Android Studio 中工作,还是可以在带有 ADT 的 Eclipse 中也能做到这一点?
  • 可以使用最新的 ADT for Eclipse。在此处查看完整描述:sites.google.com/a/android.com/tools/recent/…
  • 哇哦换弦!
  • 请注意,try-with-resources 只能用于 API 19 或更高版本。
【解决方案2】:

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

【讨论】:

  • 我想这是最新 android-studio 的正确答案。希望我能把这也是一个正确的答案..
  • 这与接受的答案基本相同。
  • 这只是一个方便的功能,它将前面描述的“compileOptions”代码插入到gradle文件中。
  • 如何设置为 8?
  • 我看不到 1.8 和 1.9?尽管 About -> Help 说 Android studio 使用的是 1.8 JRE。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    最新的 Android Studio 1.4。

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

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

    【讨论】:

    • 此设置令人困惑,因为它会影响所有项目,即使它被命名为“项目结构”。
    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:

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

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

      【讨论】:

      【解决方案7】:

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

      compileSdkVersion 23
      

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

      【讨论】:

        【解决方案8】:

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

        您还可以进入模块设置并将Source/Target Compatibility设置为1.7。

        Module settings window

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

        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
        

        【讨论】:

          猜你喜欢
          • 2015-05-04
          • 1970-01-01
          • 1970-01-01
          • 2016-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多