【问题标题】:Diamond type are not supported at this language level此语言级别不支持菱形类型
【发布时间】:2015-05-26 03:17:55
【问题描述】:

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

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

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

【问题讨论】:

  • diamond operator is not supported in -source 1.6 好像你用的JDK6更新到JDK7或者JDK8。
  • @Apurva 感谢您的厘米,但我的 jdk 是 7

标签: android android-studio diamond-operator


【解决方案1】:

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

Source Compatibility == 1.7
Target Compatibility == 1.7

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

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

【讨论】:

    【解决方案2】:

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

    文件 --> 项目结构 --> 在项目设置 --> 选择项目 -- > 项目语言级别 --> 选择 7 - Diamons、ARM、multi-catch 等8 - Lambdas ,键入注释等。选项并点击应用

    【讨论】:

      【解决方案3】:

      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】:

        几天前,我遭受了这种痛苦。只需更新您的 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
            }
        

        【讨论】:

        【解决方案5】:

        在 Intellij 中,至少对我来说,问题是在“设置->构建、执行、部署->Java 编译器”下指定的每个模块的目标版本是错误的。

        希望这可以节省一些时间。

        【讨论】:

          【解决方案6】:

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

          请注意,对于除 try with resources 之外的所有语言功能,您都可以使用值早于 19 的 minSdkVersion。如果您想对资源使用 try,您还需要使用 19 的 minSdkVersion。

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-10-15
            • 2014-08-09
            • 1970-01-01
            • 2016-02-29
            • 2016-05-17
            • 2016-12-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多