钻石类型在此语言级别下不受支持。

8

在将项目导入Android Studio后,如果我想编译或运行该项目,它会引发以下错误:

错误:(61, 65)java:不支持钻石操作符在-source1.6中
(使用-source7或更高版本启用钻石操作符)

有人知道这是什么,如何解决?


2
钻石运算符在-source 1.6中不受支持。看起来你正在使用JDK6,请升级到JDK7或JDK8。 - Apurva
@Apurva 感谢您的评论,但我的JDK是7。 - Amir
6个回答

13
在Android Studio中(文件-> 项目结构...,属性选项卡),设置以下值:
Source Compatibility == 1.7
Target Compatibility == 1.7

在此输入图片描述

然后,您的 build.gradle 文件将具有以下条目:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

在此输入图片描述


7
在Intellij Idea中,您需要设置项目语言级别(默认适用于所有模块)和模块语言级别。 文件--> 项目结构--> 在项目设置下--> 选择项目-->项目语言级别--> 选择7 - Diamons, ARM, multi-catch etc.8 - Lambdas,type annoationsetc选项,然后单击应用

点击此处查看图片


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
    }

1
谢谢,但我的buildToolsVersion与你的相同。 - Amir
1
事实上,我从Github导入Telegram源代码,并面临着这些错误 https://github.com/DrKLO/Telegram/tree/master/TMessagesProj - Amir
1
@Amir 请查看此页面 https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/build.gradle - IntelliJ Amiya
1
我刚刚导入了项目,想要第一次运行它,但是什么都没有改变 :( - Amir
当我遇到这个问题时,我只是更新了我的JDK和SDK。顺便说一下,请检查https://dev59.com/Gm855IYBdhLWcg3wvnKE链接。 - IntelliJ Amiya

2

钻石操作符是Jdk 7的新功能之一。请确保您的jdk版本是7还是其他版本。以下是钻石操作符的示例。

这里有一个赋值语句:

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

使用 Diamond Operator:

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
    }
}

希望对你有所帮助。

2
在Intellij中,至少对我来说,问题在于每个模块的目标版本,在“设置->构建、执行、部署->Java编译器”下指定的版本是错误的。 enter image description here 希望这能为某些人节省时间。

1

使用Android KitKat(buildToolsVersion 19),您可以使用钻石操作符、多重捕获、switch语句中的字符串、带资源的try等功能。要实现这一点,请将以下内容添加到您的构建文件中:

android {
        compileSdkVersion 19
        buildToolsVersion "19.0.0"

        defaultConfig {
            minSdkVersion 7
            targetSdkVersion 19
        }

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

请注意,您可以使用早于19的minSdkVersion来使用所有语言功能,除了try with resources。如果要使用try with resources,则还需要使用minSdkVersion 19。
您还需要确保Gradle正在使用JDK的1.7或更高版本。(以及Android Gradle插件的0.6.1或更高版本。)

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


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