Je testais certaines nouvelles fonctionnalités de Java 8 et j'ai copié l'exemple dans mon IDE (Eclipse à l'origine, puis IntelliJ) comme indiqué ci-dessous: http://docs.Oracle.com/javase/ tutorial/Java/javaOO/examples/RosterTest.Java
Eclipse n'offrait aucun support pour les expressions lambda et IntelliJ continuait à signaler une erreur "Les expressions lambda n'étaient pas prises en charge à ce niveau de langage". J'aimerais savoir s'il s'agit d'un problème d'installation, de code ou de support.
Dans IntelliJ IDEA:
Dans File Menu
→ Project Structure
→ Project
, remplacez Project Language Level
par 8.0 - Lambdas, type annotations etc.
Les votes les plus importants ne fonctionnent pas dans la dernière version d'Android Studio 3.0 ou version ultérieure
Remplacez Source Compatibility
et Target Compatibility
par 1.8
Vous pouvez également le configurer directement dans le fichier build.gradle correspondant.
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
}
}
Pour intellij 13, Modifiez simplement le niveau de langue du projet lui-même en 8.0
avec la navigation suivante.
File
|
|
---------Project Structure -> Project tab
|
|________Project language level
J'ai également dû mettre à jour Modules lang level
quand il n'y avait pas de plug-in maven pour Java compiler
.
File
|
|
---------Project Structure -> Modules tab
|
|________ language level
Mais ce Module lang level
serait automatiquement corrigé s’il existait déjà un maven plugin
,
<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>
Après les changements, tout va bien
Dans Android studio canary build (3. +), vous pouvez effectuer les opérations suivantes:
Fichier -> Structure du projet -> Rechercher dans la section Modules, il y a des noms de modules de votre classe. Cliquez sur le module dans lequel vous souhaitez mettre à niveau Java vers la version 1.8. -> Modifiez "Compatibilité de la source" et "Compatibilité de la cible" de 1,8 ou moins à 1,8. Ne changez rien d'autre. -> Cliquez sur Appliquer
maintenant gradle sera resynchronisé et votre erreur sera supprimée.
Ajoutez simplement compileOptions
dans build.gradle yours app:
Android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Pour les derniers utilisateurs utilisant Android studio 3.0.1 ou une version ultérieure. Cliquez simplement sur Alt + Entrée et mettez à niveau votre niveau de langue vers 8.0 - Lambdas, tapez des annotations, etc.
Compiler avec Java 8 (lambdas etc.) dans IntelliJ IDEA 15;
CTRL + ALT + SHIFT + S
ou structure de fichier/projet
Ouvrir l'onglet Projet
Définissez Project SDK sur une version Java compatible (1.8)
Définissez le niveau de langue du projet sur 8
Ouvrir l'onglet Modules
Définissez le niveau de langue sur 8, cliquez sur OK.
CTRL + ALT + S
ou Fichier/Paramètres
Construction, exécution, déploiement/compilateur/compilateur Java
Changez la version du bytecode cible en 1.8, cliquez sur OK.
En fait, le support Eclipse pour Java 8 est disponible: voir ici et ici .
Utilisation de: IntelliJ IDEA 2017.1.4 Build # IU-171.4694.23
Changer le niveau de langue via l'onglet Paramètres du projet/Projet n'a rien fait. Frapper à la place Alt + Enter et en sélectionnant "Définir le niveau de langue sur 8 - Lambdas, taper des annotations, etc." et cela s'est résolu automatiquement.
Comme l'a souligné Stephen C, Eclipse Kepler (4.3) prend en charge Java 8 lors de l'installation du correctif (instructions d'installation ici )
Une fois installé, vous devrez indiquer à vos projets d’utiliser Java 8. Commencez par ajouter le JDK à Eclipse:
Ensuite, indiquez au projet d'utiliser JDK 1.8:
Ajouter le bloc suivant au fichier pom a fonctionné pour moi:
<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>
Vérifiez les paramètres ci-dessous:
Fichier-> Structure du projet-> Onglet Projet.
*Project SDK should be set to 8 or above.*
Fichier-> Structure du projet-> Modules.
*Check that your or all modules has Language level set to 8 or above.*
Fichier-> Paramètres (ou Autres paramètres-> Préférence pour les nouveaux projets dans la nouvelle version d'idée)
*Search for Java compiler and check if Project byte code version
and per module byte code version is set 8 or above.*
Votre problème peut tomber dans l’une des catégories définies ci-dessus.
Même après avoir appliqué les paramètres spécifiques au projet définis ci-dessus sur IntelliJ ainsi que sur Eclipse, cela échouait toujours pour moi!
Ce qui a fonctionné pour moi a été l’ajout du plug-in maven avec source et target avec un paramètre 1.8 en 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>
Le même projet (Android Studio 3.3.2
, gradle-4.10.1-all.Zip
, compileSdkVersion 28
, buildToolsVersion '28.0.3'
) fonctionne bien sur la nouvelle machine Windows rapide et souligne Java 8
par une couleur rouge sur le ancien ordinateur portable Ubuntu 18.04 (cependant, le projet est compilé sans erreurs sur Ubuntu ).
Les deux seules choses que j'ai changées pour le forcer à arrêter de souligner par le rouge étaient d'exclure incremental true
et dexOptions
compileOptions {
// incremental true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
//dexOptions {
// javaMaxHeapSize "4g"
//}
dans la app
- level build.gradle
.
Cause possible n ° 1 (identique aux trois premières réponses à cette question): Paramètres de structure de projet
Fichier> Structure du projet> Sous Paramètres du projet, sélectionnez Projet> définir Project SDK sur 1.8 (avec la version 65 ou supérieure, la version la plus récente est 112) et définissez Niveau de langue du projet sur 8.
Fichier> Structure du projet> Sous Paramètres de la plate-forme, accédez à Projet> assurez-vous que votre chemin de répertoire du JDK} est défini sur 1.8 (avec la version 65 ou supérieure, la dernière est 112).
Si ce qui précède ne fonctionne pas, vérifiez la version de bytecode cible de votre compilateur et passez à la cause possible n ° 2.
Cause possible n ° 2: compilateur
Meilleurs vœux :)
Dans intellij 14, les paramètres suivants ont fonctionné pour moi . Paramètres Intellij14
Pour moi, aucune des solutions fournies n'a fonctionné.
Cela devrait être votre dernier recours. répertoire racine du projet et recherchez le fichier contenant le paramètre de version et définissez-le sur votre version préférée.
Ctrl + Alt + Maj + S puis, dans le projet, sélectionnez le niveau de langue 1.8, lisez plus sur les expressions lambda ici
Commencez par vérifier la version de JDK que vous utilisez, elle devrait être supérieure à 1.8.
Si c'est le cas, procédez comme suit.
Changer le niveau de langue du projet et des modules dans Intellij .
Projet
1.Fichier-> Structure du projet-> Projet-> Niveau de langue du projet Changez-le en 8 pour que les expressions lamba fonctionnent
2.Fichier-> Structure du projet-> Module-> Niveau de langue du projet Changez-le en 8 pour que les expressions lamba fonctionnent
Pour avoir le support de Ecplise pour les expressions lambda:
cela ne fonctionne pas pour les nouvelles intelliJ mises à jour ... pour les nouvelles intelliJ ..
Allez dans -> Fichier -> Structure du projet -> Bibliothèques globales ==> sur JDK 1.8 ou une version ultérieure.
également Fichier -> Structure du projet ---> projets ===> régler le "manuel de langue du projet" sur 8
également Fichier -> Structure du projet ---> projet sdk ==> 1.8
Cela devrait permettre l'expression lambda pour votre projet.