Erreur fatale lors de la compilation: version cible non valide: 1.8 -> [Aide 1]

170

Problème similaire comme celui publié sur une version cible invalide: 1.7 mais après avoir suivi le blog, mon problème n'est toujours pas résolu.

Échec de l'exécution de l'objectif org.apache.maven.plugins: maven-compiler-plugin: 3.1: compile (default-compile) sur le projet hm_app: erreur fatale lors de la compilation: version cible non valide: 1.8 -> [Aide 1]

Je suivais comme tutoriel quand j'ai rencontré ce problème.

abt java & mvn

C:\mvn>echo %JAVA_HOME% 
C:\mvn>echo %JRE_HOME%
C:\mvn>echo %MAVEN_HOME% yields

les sorties

C:\Program Files\Java\jdk1.7.0_51
C:\Program Files\Java\jre7
C:\apache-maven-3.0.4
rvd
la source
3
... et vous êtes sûr que Java 8 est installé quelque part?
Makoto
j'ai x86, 64 java 7 et pas de java 8
rvd
3
D'accord. Alors pourquoi essayez-vous de compiler du code Java 8 sans compilateur Java 8?
Makoto
@Makoto ty pour avoir examiné mon problème d'installation de java 8 l'a résolu .... ty man :)
rvd
@Makoto Enfin, j'ai compris ce que vous disiez "Ok. Alors pourquoi essayez-vous de compiler du code Java 8 sans compilateur Java 8?" donc je viens de changer dans mon fichier pom.xml java.version> 1.8 </java.version> en java.version> 1.7 </java.version> et je pourrais aussi utiliser mvn compile sur java7
rvd

Réponses:

281

Vous avez défini votre %JAVA_HOMEsur jdk 1.7, mais vous essayez de compiler en utilisant 1.8. Installez jdk 1.8 et assurez-vous que vos %JAVA_HOMEpoints à cela ou déposez la version cible à 1.7.

version cible non valide: 1.8

La version cible fait référence à la version jdk.

Zavior
la source
7
une autre solution possible dans mon cas est de modifier le fichier pom.xml java.version> 1.8 </java.version> en java.version> 1.7 </java.version>
rvd
1
C'est précisément là que maven recherche la version java. Donc, effectivement, vous avez changé la version java en une version que vous aviez installée sur votre% JAVA_HOME.
Zavior
2
Sur mon mac, j'exporte JAVA_HOME = /usr/libexec/java_home -v 1.8pour définir JAVA_HOME à l'emplacement approprié pour 1.8 JDK. Fournissez votre version préférée à la place de la 1.8. (Il y a des backticks après = et après 8).
bruce szalwinski
Oui, tu m'as eu. Je l'ai changé pour compiler un autre programme hérité qui ne supporte que la version 1.7 hier: D Merci!
Davut Gürbüz
31

Mettez la valeur dans le plugin:

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

L'erreur était l'utilisation:

<source>${java.version}</source>
<target>${java.version}</target>
Camila Macedo
la source
2
Dans mon cas, la solution est de définir à la fois la source et la cible sur 1,7
pensez
dans quel fichier puis-je trouver cela?
Yusril Maulidan Raji le
21

Dans mon cas, le maven "Run configuration" utilisait le mauvais JRE (1.7). Assurez-vous de vérifier Exécuter -> Exécuter les configurations -> (Tab) JRE pour être un jdk1.8.x.

Roland Ettinger
la source
c'est vrai, nous avons donc les choses suivantes à vérifier la prochaine fois si cette erreur survient: JAVA_HOME, BUILD_Configuration, RUN_Configuration
Farhan
13

Le problème a été résolu car j'avais un JDK pointant vers 1.7 et JRE pointant vers 1.8. Archiver l'invite de commande ma saisie

java -version

et

javac -version.

Les deux devraient être identiques.  

Bikramjit Saha
la source
5

Pour éclipse, voici comment j'ai résolu mon problème:

  1. Préférences -> Compilateur -> Niveau de réclamation du compilateur (Changer à 1.8) entrez la description de l'image ici

  2. Perférences -> JRE installés -> sélectionnez JAVA SE 8 1.8 entrez la description de l'image ici

  3. Reconstruisez via maven en utilisant Run as maven build.

Il ne devrait plus vous montrer l'erreur cible non valide.
Remarque: je n'ai pas eu à définir ou modifier d'autres variables dans mon terminal. J'espère que cela t'aides.

РАВИ
la source
2

Mettre cela dans votre .profile prendra en charge dynamiquement votre $JAVA_HOME

export JAVA_HOME=$(/usr/libexec/java_home)

Fermez ensuite votre shell, ouvrez-en un nouveau et testez avec

echo $JAVA_HOME

Il devrait afficher quelque chose comme

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

Sinon , supprimez toute autre affectation de JAVA_HOME dans vos scripts de démarrage. N'oubliez pas que ces scripts de démarrage commencent par un .afin qu'ils soient masqués et ne seront pas inclus lors de l'utilisation de *caractères génériques, par exemple si vous souhaitez grep tous les fichiers de votre répertoire personnel, vous devez:

grep -s JAVA_HOME ~/.* --exclude=.bash_history
Lilalinux
la source
1

Le problème auquel je faisais face était que j'étais capable de créer une construction maven à partir de l'invite de commande mais pas à partir d'Eclipse.Ce qui a fonctionné pour moi dans eclipse, c'est que j'ai changé la configuration d'exécution pour pointer vers le dossier JRE à l'intérieur de JDK plutôt que de le laisser dans Dossier JDK uniquement selon le standard.Cette solution peut également fonctionner pour vous, mais essayez ceci si et seulement si tous les chemins java sont corrects, java et javac affichent la même version que celle présente dans la cible de pom.xml.

Vaibhav Gupta
la source
C'était mon problème et ma solution.
Skychan
1

J'ai rencontré ce problème de déploiement sur Dokku, pour une raison quelconque, il choisissait JDK 1.7

La création d'un system.propertiesfichier et d'un paramètre a java.runtime.version=1.8résolu le problème. Dokku utilise désormais la version 8 de Java. Choisir un JDK sur Heroku

Je n'ai jamais eu à le faire avant ...

Edmore M Gonese Digolodollarz
la source
L'indice fonctionne toujours. J'ai dû beaucoup chercher pour changer la version Java de Dokku en 11. Merci beaucoup.
Mister Vanderbilt
1

Comme mentionné par Camila Macedo - vous devez explicitement pointer la version java pour compiler-plugin. Pour le démarrage du printemps, vous pouvez le faire par la propriété suivante:

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.release>8</maven.compiler.release>
  </properties>
M. Gryshenko
la source
Oui, le réglage l'a maven.compiler.releasecorrigé dans mon projet Maven.
Cortex le
1

En utilisant IntelliJ, je devais simplement installer une autre version JDK (supérieure). Après le redémarrage de l'IDE, tout a fonctionné et même toutes les dépendances ont été résolues.

Markus Zeller
la source
1
Redémarrer intelliJ a été la clé pour moi. J'ai mis à jour la variable d'environnement de JAVA_HOME pour pointer vers une version Java différente, mais il semble que la variable système ne s'actualise pas dans la session CMD existante. Il suffirait peut-être de simplement créer une nouvelle session Terminal.
Ubeogesh
0

Cette question ne posait pas explicitement sur Docker, mais j'ai reçu la même erreur lorsque j'avais un fichier pom.xml qui ciblait 1.9 ...

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.9</maven.compiler.source>
  <maven.compiler.target>1.9</maven.compiler.target>
</properties>

... mais a ensuite essayé d'exécuter des tests sur un conteneur Docker en spécifiant "maven" par lui-même.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven mvn -e test

Pour moi, le correctif était de cibler la version exacte dont j'avais besoin.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven:3.5.2-jdk-9 mvn test

(Vous pouvez en savoir plus ici .)

poissons vivat
la source
0

Sur la machine Windows, vous pouvez définir temporairement la version Java.
Par exemple, pour changer la version en Java 8, exécutez cette commande sur cmd:

set JAVA_HOME=C:\\...\jdk1.8.0_65
user1316369
la source
0

Effectuez une mise à jour forcée de Maven qui apportera les versions 1.8 Jar compatibles, puis lors de la construction, mettez à jour les versions JRE dans l'environnement d'exécution vers la version 1.8 à partir des configurations d'exécution et appuyez sur RUN

Sablonneux
la source
0

Si vous utilisez Eclipse IDE, allez dans le menu Fenêtre et sélectionnez les préférences.Vous recherchez les JRE installés et sélectionnez le JRE dont vous avez besoin pour créer le projet

Himanshu Kumar
la source
-4

Ce qui a fonctionné dans mon cas est le suivant:

J'ai ouvert le pom.xmlet remplacé celui des plug-ins comme ci-dessous.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

Avant de 1.8modifier les balises source et cible , j'ai changé cela en 1.7et cela a fonctionné.

VIJAYKUMAR REDDY ALAVALA
la source
Comprenez-vous le changement que vous avez fait ou avez-vous simplement fait le changement en espérant le meilleur?
Popeye
Tous les deux. Je comprends que le projet fonctionne maintenant sur la version Java 1.7. Je l'ai fait en espérant que cela fonctionnera.
VIJAYKUMAR REDDY ALAVALA