2015-03-23 10 views
7

Nach dem Import eines Projekts in Android Studio unterstützt, wenn ich kompilieren wollen oder das Projekt und führen es einen Fehler wirft:Diamant-Typ sind nicht in dieser Sprache Ebene

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

Wer weiß, was es ist und wie man löse es ?

+2

'Diamond-Operator wird nicht in -source 1.6' unterstützt. Scheint, als ob Sie JDK6 verwenden, aktualisieren Sie es auf JDK7 oder JDK8. – Apurva

+0

@Apurva Danke für Ihre cm, aber meine jdk ist 7 – Amir

Antwort

12

In Android Studio (Datei -> Projektstruktur ..., Registerkarte Eigenschaften), legen Sie die folgenden Werte:

Source Compatibility == 1.7 
Target Compatibility == 1.7 

enter image description here

Danach wird Ihr build.gradle werden diese Einträge haben:

compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_7 
    targetCompatibility JavaVersion.VERSION_1_7 
} 

enter image description here

+0

Perfekte Lösung –

2

Vor ein paar Tagen litt ich darunter. Aktualisieren Sie einfach Ihre buildToolsVersion wie unten. Und aktualisieren Sie Ihre 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

Danke, aber meine buildToolsVersion ist das gleiche wie Sie – Amir

+1

Bitte schreiben Sie Ihren Code. Überprüfen Sie @Arkar Antworten –

+1

In der Tat importiere ich Telegram-Quellcode von Github und Gesicht mit diesen Fehler https://github.com/DrKLO/Telegram/tree/master/TMessagesProj – Amir

2

Diamond operator ist einer der neuen Funktion von Jdk 7. Bitte stellen Sie sicher, dass Sie jdk Version 7 oder nicht. Hier ist ein Beispiel für einen Diamantenoperator. Hier

ist eine Zuweisungsanweisung:

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

Mit Diamant Betreiber:

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

bearbeiten

Hinzufügen, dass Ihr 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 
    } 
} 

Ich hoffe, es wird für Sie nützlich sein.

1

Mit Android KitKat (buildToolsVersion 19) können Sie den Diamant-Operator verwenden kann, Multi-Catch, Strings in Schalter, versuchen Sie mit Ressourcen, etc. Um dies zu tun, fügen Sie Folgendes zu Ihrer Build-Datei:

android { 
     compileSdkVersion 19 
     buildToolsVersion "19.0.0" 

     defaultConfig { 
      minSdkVersion 7 
      targetSdkVersion 19 
     } 

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

Beachten Sie, dass Sie minSdkVersion mit einem Wert vor 19 für alle Sprachfeatures verwenden können, außer für Versuche mit Ressourcen. Wenn Sie versuchen, mit Ressourcen zu verwenden, müssen Sie auch eine minSdkVersion von 19 verwenden.

Sie müssen auch sicherstellen, dass Gradle Version 1.7 oder höher des JDK verwendet. (. Und Version 0.6.1 oder höher des Android Gradle Plugin)

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

+0

im Projekt verwendet zweite Version von Ihr Code auch. – Amir

7

In Intellij Idea müssen Sie den Projektsprachenlevel (Standard für alle Module) und den Sprachlevel des Moduls (s) einstellen.

Datei ->Projektstruktur -> Unter Projekteinstellungen ->Projekt auswählen ->Projektsprachniveau -> Wählen Sie 7 - Diamons, ARM, multi -Catch usw. oder 8 - Lambdas, typ annoationsetc. und klicken Sie auf Nehmen

Click here to see the pic

1

In Intellij, für mich bei leat, war das Problem, dass die Zielversion für jedes Modul unter „Einstellungen- angegeben> Build, Ausführung, Deployment> Java-Compiler ", war falsch. enter image description here

Hoffe das spart jemand einige Zeit.

Verwandte Themen