此语言级别不支持钻石类型

时间:2015-03-23 07:28:18

标签: android android-studio diamond-operator

将项目导入Android studio后,如果我想编译或运行该项目,则会抛出错误:

  

错误:(61,65)java:在源1.6中不支持菱形运算符   (使用-source 7或更高版本来启用菱形运算符)

有谁知道它是什么以及如何解决它?

6 个答案:

答案 0 :(得分:13)

在Android Studio(文件 - >项目结构...,属性标签)中,设置以下值:

Source Compatibility == 1.7
Target Compatibility == 1.7

enter image description here

在此之后,您的build.gradle将包含以下条目:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

enter image description here

答案 1 :(得分:7)

在Intellij Idea中,您需要设置项目语言级别(所有模块的默认值)和模块语言级别。

档案 - > 项目结构 - >在项目设置下 - >选择项目 - > 项目语言水平 - >选择 7 - Diamons,ARM,multi-catch等。 8 - Lambdas,输入annoationsetc 。选项并点击应用

Click here to see the pic

答案 2 :(得分:2)

几天前,我受此影响。只需更新 buildToolsVersion ,如下所示。并升级您的 SDK

    android {
    compileSdkVersion 21
    buildToolsVersion '21.1.2'

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

答案 3 :(得分:2)

Diamond operator是Jdk 7的新功能之一。请确保您的jdk版本是否为7。以下是钻石操作员的一个例子。

这是一个作业陈述:

Map<String, List<String>> anagrams = new HashMap<String, List<String>>();

钻石运营商:

Map<String, List<String>> anagrams = new HashMap<>();

修改

将其添加到您的build.gradle ..

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 21
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

希望它对你有用。

答案 4 :(得分:2)

在Intellij中,对我来说,问题是每个模块的目标版本,在&#34;设置 - &gt;构建,执行,部署 - &gt; Java编译器&#34;中指定,是错误的。 enter image description here

希望这能节省一些时间。

答案 5 :(得分:1)

使用Android KitKat(buildToolsVersion 19),您可以在开关中使用菱形运算符,多重捕获,字符串,尝试使用资源等。为此,请将以下内容添加到构建文件中:

android {
        compileSdkVersion 19
        buildToolsVersion "19.0.0"

        defaultConfig {
            minSdkVersion 7
            targetSdkVersion 19
        }

        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
    }

请注意,除了尝试使用资源外,您可以将minSdkVersion的值设置为早于19的所有语言功能。如果你想使用try with resources,你还需要使用19的minSdkVersion。

您还需要确保Gradle使用的是JDK 1.7或更高版本。 (以及Android Gradle插件的0.6.1或更高版本。)

http://tools.android.com/tech-docs/new-build-system/user-guide