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
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.
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>
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.
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 .
Pour Eclipse, voici comment j'ai résolu mon problème:
Préférences -> Compilateur -> Niveau de plainte du compilateur (Passez à 1.8)
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.
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
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
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
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.
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.
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>
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 .)} _
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 ...