web-dev-qa-db-fra.com

Erreur irrécupérable lors de la compilation: version cible non valide: 1.8 -> [Help 1]

Problème similaire à celui posté sur publication cible non valide: 1.7 mais après avoir suivi le blog, mon problème n’est toujours pas résolu.

Échec de l'exécution du but org.Apache.maven.plugins: maven-compiler-plugin: 3.1: compiler (compilation par défaut) sur le projet hm_app: erreur irrécupérable lors de la compilation: publication non valide de la cible: 1.8 -> [Aide 1]

Je suivais en tant que tutoriel quand j'ai fait face à 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
139
rvd

Vous avez défini votre %Java_HOME sur jdk 1.7, mais vous essayez de compiler avec 1.8. Installez jdk 1.8 et assurez-vous que votre %Java_HOME pointe sur celui-ci ou déposez la version cible sur 1.7. 

version cible non valide: 1.8

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

233
Zavior

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>
22
Camila Macedo

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 peu jdk1.8.x.

19
Roland Ettinger

Le problème a été résolu car j’avais un JDK pointant vers 1.7 et JRE pointant vers 1.8. Commande Check Invite ma saisie 

Java -version

et 

javac -version.

Les deux devraient être identiques .

8
Bikramjit Saha

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

  1. Préférences -> Compilateur -> Niveau de plainte du compilateur (Passez à 1.8)  enter image description here

  2. Perferences -> JRE installés -> sélectionnez Java SE 8 1.8  enter image description here

  3. Reconstruisez via maven en utilisant Exécuter en tant que construction maven.

Il ne devrait plus vous montrer l'erreur de cible invalide. 
Remarque: Je n'ai pas eu à définir ou à modifier d'autres variables dans mon terminal ... Je pense que cela vous aidera.

2
РАВИ

Mettre cela dans votre .profile prendra en charge votre $Java_HOME de manière dynamique.

export Java_HOME=$(/usr/libexec/Java_home)

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

echo $Java_HOME

Il devrait afficher quelque chose comme

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

Si ce n'est pas le cas, 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 .; ils sont donc masqués et ne seront pas inclus lors de l'utilisation de * wildcard, par exemple. si vous voulez grep tous les fichiers de votre répertoire personnel, vous devez:

grep -s Java_HOME ~/.* --exclude=.bash_history
1
lilalinux

Effectuez une mise à jour forcée de Maven qui amènera les versions de jar 1.8 compatibles, puis, lors de la construction, mettre à jour les versions de JRE dans l'environnement d'exécution à la version 1.8 à partir de l'option Configurer et en cliquant sur Exécuter

0
Sandy

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

set Java_HOME=C:\\...\jdk1.8.0_65
0
user1316369

Le problème auquel je faisais face était que je pouvais créer un maven à partir de la commande Invite mais pas à partir d'Eclipse. Ce qui a fonctionné pour moi dans Eclipse est que j'ai modifié la configuration d'exécution pour qu'elle pointe vers le dossier JRE à l'intérieur du JDK plutôt que de la laisser dans Dossier JDK uniquement selon la norme. 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.

0
Vaibhav Gupta

Si vous utilisez Eclipse IDE, accédez au menu Fenêtre et sélectionnez Préférences. Vous y recherchez les JRE installés et sélectionnez le JRE dont vous avez besoin pour construire le projet.

0
Himanshu Kumar

Comme mentionné par Camila Macedo - vous devez indiquer explicitement la version Java du compilateur-plugin. Pour le démarrage de 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>
0
M. Gryshenko

Cette question ne demandait pas explicitement à propos de Docker, mais j'ai reçu la même erreur quand 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" 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 consistait à 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 .)} _

0
Grant

J'ai été confronté à ce problème lors du déploiement sur Dokku. Pour une raison quelconque, il avait choisi JDK 1.7.

La création d'un fichier system.properties et le paramétrage de Java.runtime.version=1.8 ont résolu le problème. Dokku utilise maintenant Java version 8 . Choisir un JDK sous Heroku

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