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.
In IntelliJ IDEA:
Ändern Sie in File Menu
→ Project Structure
→ Project
Project Language Level
in 8.0 - Lambdas, type annotations etc.
.
Die Top-Stimmen funktionieren nicht im neuesten Android Studio 3.0 oder höher, dies ist die Lösung
Ändern Sie Source Compatibility
und Target Compatibility
in 1.8
.
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
}
}
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
Ich musste auch Modules lang level
aktualisieren, wenn es kein Maven-Plugin für Java compiler
gab.
File
|
|
---------Project Structure -> Modules tab
|
|________ language 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
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.
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
}
}
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.
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
Eigentlich ist Eclipse-Unterstützung für Java 8 verfügbar: siehe hier und hier .
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.
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:
Dann teilen Sie dem Projekt mit, dass es JDK 1.8 verwenden soll:
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>
Überprüfen Sie die folgenden Einstellungen:
Datei-> Projektstruktur-> Registerkarte Projekt.
*Project SDK should be set to 8 or above.*
Datei-> Projektstruktur-> Module.
*Check that your or all modules has Language level set to 8 or above.*
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.
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>
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
.
Mögliche Ursache 1 (wie bei den ersten 3 Antworten auf diese Frage): Projektstruktureinstellungen
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.
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
Schöne Grüße :)
In Intellij 14 funktionierten folgende Einstellungen für mich . Intellij14 Settings
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
Ü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
Unterstützung von Ecplise für Lambda-Ausdrücke:
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.