it-swarm.com.de

Java "Lambda-Ausdrücke, die auf dieser Sprachebene nicht unterstützt werden"

Ich testete einige neue Funktionen von Java 8 und kopierte das Beispiel in meine IDE (ursprünglich Eclipse, dann IntelliJ), wie hier gezeigt: http://docs.Oracle.com/javase/tutorial /Java/javaOO/examples/RosterTest.Java

Eclipse bot keinerlei Unterstützung für Lambda-Ausdrücke an, und IntelliJ meldete weiterhin den Fehler "Lambda-Ausdrücke, die auf dieser Sprachebene nicht unterstützt werden". Ich würde gerne wissen, ob dies ein Problem mit meiner Installation, dem Code oder Support ist.

149
Czipperz

In IntelliJ IDEA:

Ändern Sie in File MenuProject StructureProjectProject Language Level in 8.0 - Lambdas, type annotations etc..

229
Abhilash

Sie sollten die Sprachebene des Quellcodes auch auf der Registerkarte "Quelle" (Teil "Module") ändern. 

 Change Language Level

87
user2682809

Die Top-Stimmen funktionieren nicht im neuesten Android Studio 3.0 oder höher, dies ist die Lösung

  1. Datei> Projektstruktur  enter image description here

Ändern Sie Source Compatibility und Target Compatibility in 1.8.

  1. Konfigurationsdatei bearbeiten

Sie können es auch direkt in der entsprechenden build.gradle-Datei konfigurieren

Android {
  ...
  // Configure only for each module that uses Java 8
  // language features (either in its source code or
  // through dependencies).
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
40
Alen Lee

Für intellij 13, Ändern Sie einfach die Project-Sprachebene selbst mit der folgenden Navigation in 8.0

File
|
|
 ---------Project Structure -> Project tab
          |
          |________Project language level

Java8

Modul lang Ebene

Ich musste auch Modules lang level aktualisieren, wenn es kein Maven-Plugin für Java compiler gab.

File
|
|
 ---------Project Structure -> Modules tab
          |
          |________ language level

 Modules lang level

Dieser Module lang level wäre jedoch automatisch behoben, wenn bereits ein maven plugin vorhanden ist. 

    <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.6.0</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>

Nach Änderungen sieht alles gut aus

40
prayagupd

In Android Studio Canary Build (3. +) können Sie Folgendes tun:

Datei -> Projektstruktur -> Schauen Sie im Modulabschnitt nach, es gibt Namen von Modulen Ihrer Klasse. Klicken Sie auf das Modul, in dem Sie Java auf Version 1.8 aktualisieren möchten. -> Ändern Sie "Quellkompatibilität" und "Zielkompatibilität" von 1,7 oder niedriger auf 1,8. Ändern Sie nichts anderes. -> Klicken Sie auf Übernehmen

jetzt wird Gradle erneut synchronisiert und Ihr Fehler wird entfernt.

23
Tarun

Fügen Sie einfach compileOptions in build.gradle Ihrer App hinzu:

Android {


...

  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
19
Morozov

Für neueste Benutzer, die Android Studio 3.0.1 oder höher verwenden. Klicken Sie einfach auf Alt + Eingabe und erweitern Sie Ihr Sprachniveau auf 8.0 - Lambdas, geben Sie Anmerkungen ein.

10
Vivek

Wenn Sie In Sprache 5 nicht unterstützterhalten, überprüfen Sie Folgendes: ( Für mich war es im Abschnitt Module)

 Lanaguge Level 5 not supported

4
Kejsi Struga

Kompilieren mit Java 8 (Lambdas usw.) in IntelliJ IDEA 15;

  • CTRL + ALT + SHIFT + S oder Datei-/Projektstruktur

  • Öffnen Sie die Registerkarte Projekt

  • Setzen Sie Project SDK auf kompatible Java-Version (1.8).

  • Stellen Sie die Projektsprachenebene auf 8 ein 

  • Öffnen Sie die Registerkarte Module

  • Stellen Sie die Sprachstufe auf 8 ein und klicken Sie auf OK 

  • CTRL + ALT + S oder Datei/Einstellungen

  • Build, Ausführung, Bereitstellung/Compiler/Java-Compiler

  • Ändern Sie die Zielbytecode-Version in 1.8 und klicken Sie auf OK

3
Daniel de Zwaan

Eigentlich ist Eclipse-Unterstützung für Java 8 verfügbar: siehe hier und hier .

  • Für Kepler ist es als "Feature-Patch" gegen SR2 verfügbar (d. H. Eclipse 4.3.2).
  • Für Luna (Eclipse 4.4) wird es in der Standardversion erscheinen. ( Zeitplan für die Veröffentlichung )
3
Stephen C

Using: IntelliJ IDEA 2017.1.4 Build-Nr. IU-171.4694.23

Das Ändern des Sprachniveaus über die Registerkarte Projekteinstellungen/Projekt hat nichts bewirkt. Stattdessen schlagen Alt + Enter und wählen Sie "Sprachlevel auf 8 einstellen - Lambdas, Typanmerkungen usw." und es löste sich automatisch auf.

2

7.0 unterstützt keine Lambda-Ausdrücke. Fügen Sie dies einfach zu Ihrem App-Gradle hinzu, um Ihr Sprachniveau auf 8.0 zu ändern:

compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

 enter image description here

2
live-love

Wie Stephen C hervorgehoben hat, unterstützt Eclipse Kepler (4.3) Java 8, wenn der Patch installiert ist (Installationsanweisungen hier ).

Nach der Installation müssen Sie Ihren Projekten die Verwendung von Java 8 mitteilen. Fügen Sie zunächst das JDK zu Eclipse hinzu:

  • Gehen Sie zu Fenster -> Einstellungen
  • Gehen Sie zu Java -> Installierte JREs
  • Fügen Sie Standard-VM hinzu, und zeigen Sie auf den Speicherort der JRE
  • Dann gehe zum Compiler
  • Stellen Sie den Compiler-Übereinstimmungsgrad auf 1.8 ein

Dann teilen Sie dem Projekt mit, dass es JDK 1.8 verwenden soll:

  • Gehen Sie zu Projekt -> Einstellungen
  • Gehen Sie zu Java Compiler
  • Projektspezifische Einstellungen aktivieren
  • Stellen Sie den Compiler-Übereinstimmungsgrad auf 1.8 ein
2
Gijs Overvliet

Das Hinzufügen des folgenden Blocks zur POM-Datei funktionierte für mich:

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>
1
Radi

Überprüfen Sie die folgenden Einstellungen:

  1. Datei-> Projektstruktur-> Registerkarte Projekt. 

    *Project SDK should be set to 8 or above.*
    
  2. Datei-> Projektstruktur-> Module.

    *Check that your or all modules has Language level set to 8 or above.*
    
  3. Datei-> Einstellungen (oder andere Einstellungen-> Einstellungen für neue Projekte in neuerer Ideenversion)

    *Search for Java compiler and check if Project byte code version 
    and per module byte code version is set 8 or above.*
    

Ihr Problem kann in eine der oben definierten Kategorien fallen. 

1
thakurnitesh27

Selbst nach der Anwendung der oben definierten projektspezifischen Einstellungen für IntelliJ und Eclipse ist es für mich immer noch fehlgeschlagen!

Was für mich funktionierte, war das Hinzufügen von Maven-Plugin mit Quelle und Ziel mit 1.8-Einstellung in POM XML:

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.0.2</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>com.abc.sparkcore.JavaWordCount</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy</id>
                    <phase>install</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
                    </configuration>   
     </execution>
            </executions>
        </plugin>
    </plugins>
</build> 
1
Dean Jain

Dasselbe Projekt (Android Studio 3.3.2, gradle-4.10.1-all.Zip, compileSdkVersion 28, buildToolsVersion '28.0.3') funktioniert auch auf dem neuen schnellen Windows-Computer und unterstreicht Java 8 durch rote Farbe auf dem alten Ubuntu 18.04-Laptop (das Projekt wird jedoch unter Ubuntu ohne Fehler kompiliert) ).

Die einzigen zwei Dinge, die ich geändert habe, um zu erzwingen, dass die Unterstreichung durch Rot aufhört, waren das Ausschließen von incremental true und dexOptions

compileOptions {
//    incremental true
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

//dexOptions {
//    javaMaxHeapSize "4g"
//}

im app-level build.gradle.

1
isabsent

Mögliche Ursache 1 (wie bei den ersten 3 Antworten auf diese Frage): Projektstruktureinstellungen

  1. Datei> Projektstruktur> Gehen Sie unter Projekteinstellungen auf Projekt> set Project SDK auf 1.8 (bei Version 65 oder höher, spätestens 112) und setzen Sie Project Language Level auf 8.

  2. Datei> Projektstruktur> Gehen Sie unter Plattformeinstellungen auf Projekt> Stellen Sie sicher, dass Ihr JDK-Home-Pfad auf 1,8 eingestellt ist (mit Version 65 oder höher, letzter Punkt ist 112).

Wenn das obige nicht funktioniert, überprüfen Sie die Ziel-Bytecode-Version Ihres Compilers und fahren Sie mit Mögliche Ursache # 2 fort.

Mögliche Ursache # 2: Compiler

  1. Datei> Einstellungen> Erstellen, Ausführen, Bereitstellen> Wechseln Sie unter Compiler zu Java Compiler> setzen Sie Ihre Project Bytecode Version auf 1.8 sowie alle Target Bytecode Version für Ihre Module. Klicken Sie auf Apply und drücken Sie OK. Starten Sie Ihre IntelliJ IDE neu. Zu diesem Zeitpunkt wurde der Lambda-Ausdruck in meiner IDE akzeptiert.

Schöne Grüße :)

1
kuzevni

In Intellij 14 funktionierten folgende Einstellungen für mich . Intellij14 Settings

1
user5760784

Für mich funktionierte keine der angebotenen Lösungen.

Dies sollte Ihr letzter Ausweg sein: -> Öffnen Sie die .iml-Datei Ihres Projekts. Ändern Sie LANGUAGE_LEVEL in JDK_1_8 oder in eine andere Version, die Sie möchten Projektstammverzeichnis und suchen Sie die Datei, die die Versionseinstellung enthält, und stellen Sie sie auf Ihre bevorzugte Version ein.

Strg + Alt + Umschalttaste + S und dann aus dem Projekt wählen Sie die Sprachebene 1.8, lesen Sie mehr über Lambda Expressions hier

0
Toseef Zafar

Überprüfen Sie zunächst die verwendete JDK-Version. Diese sollte höher als 1.8 sein.

Wenn ja, fahren Sie mit den folgenden Schritten fort.

Sprachniveau des Projekts und der Module in Intellij ändern.

Projekt

1.Datei-> Projektstruktur-> Projekt-> Projektsprachenebene Ändern Sie den Wert auf 8, damit Lamba-Ausdrücke funktionieren

2.Datei-> Projektstruktur-> Modul-> Projektsprachenebene Ändern Sie den Wert auf 8, damit Lamba-Ausdrücke funktionieren

0
Abhishek Tiwari

Unterstützung von Ecplise für Lambda-Ausdrücke:

  1. Stellen Sie sicher, dass Sie JDK 1.8 verwenden (Fenster> Voreinstellungen> Installierte JREs und Compiler).
  2. Verwenden Sie die Annotation @FunctionalInterface, wenn Sie neue funktionale Schnittstellen definieren, sodass Eclipse Ihnen Refactorings bezüglich Lambdas vorschlagen wird ( Functional Interfaces .).
0
Mehdi

diese antworten funktionieren nicht für neue, aktualisierte intelliJ ... für neue intelliJ ..

Gehen Sie zu -> Datei -> Projektstruktur -> Globale Bibliotheken ==> auf JDK 1.8 oder höhere Version setzen. 

auch Datei -> Projektstruktur ---> Projekte ===> "Projektsprachenhandbuch" auf 8 setzen 

auch Datei -> Projektstruktur ---> Projekt sdk ==> 1.8

Dies sollte den Lambda-Ausdruck für Ihr Projekt aktivieren.

0
Abhijit