2015-03-23 4 views
7

После импорта проекта в Android студии, если я хочу, чтобы скомпилировать или запустить проект он выдает ошибку:типа Алмаз не поддерживается на этом уровне языка

Error:(61, 65) java: diamond operator is not supported in -source 1.6
(use -source 7 or higher to enable diamond operator)

Кто-нибудь знает, что это такое и как реши это ?

+2

Оператор с бриллиантом не поддерживается в источнике 1,6' Похоже, вы используете JDK6 для обновления JDK7 или JDK8. – Apurva

+0

@Apurva Спасибо за ваш cm, но мой jdk - 7 – Amir

ответ

12

В Android Studio (Файл -> Структура проекта ..., вкладка Properties) установите следующие значения:

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

+0

Идеальное решение –

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

Спасибо, но My buildToolsVersion - это то же самое, что и вы – Amir

+1

Пожалуйста, разместите свой код. Проверьте @Arkar ответы –

+1

На самом деле я импортирую исходный код Telegram из Github и сталкиваюсь с этой ошибкой https://github.com/DrKLO/Telegram/tree/master/TMessagesProj – Amir

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

Надеюсь, это будет полезно для вас.

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 с ресурсами. Если вы хотите использовать попытку с ресурсами, вам также нужно будет использовать minSdkVersion 19.

Вам также необходимо убедиться, что Gradle использует версию 1.7 или новее JDK. (. А версия 0.6.1 или более поздняя версия плагина Android Gradle)

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

+0

в Project используется вторая версия ваш код тоже. – Amir

7

В Intellij Idea вам необходимо установить уровень языка проекта (по умолчанию для всех модулей) и уровень языка (ов) модуля.

Файл ->Структура проекта -> Под Настройки проекта -> Выбрать Project ->Level Language Project -> Выбрать 7 - Diamons, ARM, мульти -колла и т.д. или - Lambdas, тип annoationsetc. вариант и нажмите на Применить

Click here to see the pic

1

В Intellij, в Лит для меня проблема в том, что целевая версия для каждого модуля, указанного в разделе «Настройки-> Build, Execution, Deployment-> Java Compiler ", был неправ. enter image description here

Надеюсь, это сэкономит кому-то время.

Смежные вопросы