23 votes

Compilateur Maven 3.8.0 - Erreur fatale à la compilation : la version 11 de la version n'est pas prise en charge

Je ne parviens pas à construire en utilisant Java 11 avec la dernière version du maven-compiler-plugin.

pom.xml :

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <release>11</release>
            </configuration>
        </plugin>
    <plugins>
<build>

lorsque j'essaie de construire avec Maven :

➜  mvn clean compile
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] Building service 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ service ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 80 source files to /home/mip/service/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.859 s
[INFO] Finished at: 2018-08-01T11:20:55+01:00
[INFO] Final Memory: 32M/124M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project service: Fatal error compiling: release version 11 not supported -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Voici les versions de Maven et de Java que j'utilise :

➜  mvn -version
Apache Maven 3.5.2
Maven home: /usr/share/maven
Java version: 10.0.1, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-29-generic", arch: "amd64", family:     "unix"
➜  /usr/lib/jvm/java-11-openjdk-amd64/bin/java -version
openjdk version "10.0.1" 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 10.0.1+10-Ubuntu-3ubuntu1, mixed mode)

Java 11 s'identifiant comme "10.0.1" pourrait-il être à l'origine du problème ? Si je modifie mon pom.xml pour <release>10</release> puis il se construit sans problème, même si Java 10 n'est pas installé.

➜  ~ /usr/lib/jvm/java-11-openjdk-amd64/bin/javac -version
javac 10.0.1 

➜ javac --release 11 SomeClass.java
javac: release version 11 not 
supported Usage: javac <options> <source files>
use --help for a list of possible options

Je pense que c'est un problème avec l'Ubuntu openjdk-11-jdk paquet :

➜  ~ sudo apt install openjdk-11-jdk
Reading package lists... Done
Building dependency tree       
Reading state information... Done
openjdk-11-jdk is already the newest version (10.0.1+10-3ubuntu1).
0 to upgrade, 0 to newly install, 0 to remove and 2 not to upgrade.

18voto

Ankit Bhartiya Points 185

Mvn besoin JAVA_HOME à définir. J'ai rencontré le même problème et la mise en place JAVA_HOME pour corriger le JDK a fait l'affaire.

1voto

KC Baltz Points 655

Pour moi, cela venait du fait que j'avais installé un JRE Java 11 et non un JDK. Le nom du dossier contenait "jdk", j'ai donc supposé qu'il était correct, mais en regardant dans le fichier /bin Je n'ai pas vu de dossier javac Je pense donc qu'il est revenu à la version par défaut de Java sur le système, qui était antérieure à Java 11.

1voto

J'ai rencontré cette erreur en construisant un projet java dans un conteneur docker. Cela devait avoir quelque chose à voir avec la façon dont maven était installé, car cela a disparu lorsque j'ai basé mon conteneur sur le fichier image maven officielle .

En particulier, cela signifiait utiliser ce qui suit dans mon Dockerfile :

FROM maven:3.6.3-jdk-11-slim

Après une enquête plus approfondie, la différence cruciale est que j'ai eu le paquet java-11-openjdk mais j'avais besoin java-11-openjdk-devel .

0voto

En terminal :

mvn -version

Exemples - Version de Java : 9.0.4

Autres plugins utilisés :

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>9.0.4</release>
</configuration>
</plugin>
</plugins>

0voto

Harold L. Brown Points 1443

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X