Mes listes de fichiers pom
<project>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
...
Cependant, sur mvn clean install
, je reçois
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Failure executing javac, but could not parse the error:
javac: invalid target release: 1.7
Usage: javac <options> <source files>
/usr/bin/Java -version
est (which Java
points ici)
Java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
javac
pointe également vers la bonne version de Java
/usr/bin/javac -> /Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/bin/javac
J'utilise zsh
sur cette machine (echo $0
renvoie -zsh
)
Dans mon .zshrc
, j'ai défini:
33 # HOME
34 Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home
35 SCALA_HOME=/Library/Scala/current
36 FORGE_HOME=~/tools/forge/
37
38 # PATH
39 PATH="/Library/Frameworks/Python.framework/Versions/3.2/bin:${PATH}"
40 PATH=${PATH}:${Java_HOME}/bin
41 PATH=${PATH}:/bin/
42 PATH=${PATH}:/sbin/
43 PATH=${PATH}:/usr/bin/
44 PATH=${PATH}:/usr/sbin/
45 PATH=${PATH}:/opt/local/bin/
46 PATH=${PATH}:/opt/local/sbin/
47 PATH=${PATH}:/usr/local/git/bin
48 PATH=${PATH}:/usr/local/git/sbin
49 PATH=${PATH}:/Applications/Xcode.app/Contents/Developer/usr/bin
50 PATH=${PATH}:${SCALA_HOME}/bin
51 PATH=${PATH}:${FORGE_HOME}/bin
52
53 export PATH
Lorsque je lance mvn clean install --debug
, je constate que j’utilise Java 6
1 Apache Maven 3.0.3 (r1075438; 2011-02-28 11:31:09-0600)
2 Maven home: /usr/share/maven
3 Java version: 1.6.0_35, vendor: Apple Inc.
4 Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Où pourrait-il être défini? J'ai source (d) mon .zshrc plusieurs fois.
Vérifiez le script mvn
dans votre installation Maven pour voir comment il construit la commande. Peut-être que vous ou quelqu'un d'autre avez codé en dur un Java_HOME
et l'avez oublié.
essayez d’utiliser une version plus récente du plugin maven compiler:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
en outre, il est préférable de spécifier globalement le codage du fichier source dans maven:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
EDIT: Comme cette réponse continue d'attirer l'attention, je voudrais juste signaler que les dernières valeurs (à la dernière édition) sont 3.2 pour le plugin maven compiler et 1.8 pour Java, ainsi que des questions sur la compilation de Java 8. le code via maven doit apparaître bientôt :-)
J'ai eu le même problème et pour résoudre cela, je suis cet article de blog: http://www.mkyong.com/Java/how-to-set-Java_home-environment-variable-on-mac-os-x/
$ vim .bash_profile
export Java_HOME=$(/usr/libexec/Java_home)
$ source .bash_profile
$ echo $Java_HOME
/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home
des tâches spéciales à @mkyong
S'il vous plaît vérifier votre pom.xml pour les balises ci-dessous
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
il faut pointer la version requise de jdk
J'ai eu le même problème. J'ai constaté que c'est parce que le script Maven examine le lien CurrentJDK ci-dessous et trouve un JDK 1.6. Même si vous installez le dernier JDK, cela n’est pas résolu. Bien que vous puissiez simplement définir Java_HOME dans votre script $ HOME/.bash_profile, j'ai choisi de corriger le lien symbolique à la place comme suit:
ls -l /System/Library/Frameworks/JavaVM.framework/Versions/
total 64
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.4 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.4.2 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.5 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.5.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.6 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.6.0 -> CurrentJDK
drwxr-xr-x 9 root wheel 306 11 Nov 21:20 A
lrwxr-xr-x 1 root wheel 1 30 Oct 16:18 Current -> A
lrwxr-xr-x 1 root wheel 59 30 Oct 16:18 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
Notez que CurrentJDK pointe sur 1.6.0.jdk
Pour résoudre ce problème, j’ai lancé les commandes suivantes (vous devriez vérifier votre version installée et l’adapter en conséquence).
Sudo rm /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
Sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/ /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
Vous devez vérifier la version de Maven:
mvn -version
Vous trouverez la version Java utilisée par Maven pour la compilation. Vous devrez peut-être réinitialiser Java_HOME si nécessaire.
Diagnostics:
Vous pouvez voir quelle version de Java utilise Maven en exécutant "mvn --version"
Solution pour Debian:
Le script mvn définit la variable env Java_HOME en interne en recherchant javac (lequel javac). Par conséquent, si plusieurs versions de Java sont installées simultanément, par exemple, JDK 6 et JDK 7 et utilisez le système Alternatives Debian pour choisir entre eux, même si vous avez changé l'alternative pour "Java" en JDK 7, mvn utilisera toujours JDK 6. Vous devez également modifier l'alternative pour "javac". Par exemple.:
# update-alternatives --set javac /usr/lib/jvm/Java-7-openjdk-AMD64/bin/javac
MODIFIER:
En réalité, une solution encore meilleure consiste à utiliser update-Java-alternatives (par exemple).
# update-Java-alternatives -s Java-1.7.0-openjdk-AMD64
comme détaillé dans https://wiki.debian.org/JavaPackage , car cela changera all les alternatives à divers outils Java (il y en a une douzaine).
Pourriez-vous essayer un plugin plus récent? sur le site maven:
<version>3.0</version>
J'ai vu aussi ce qui suit:
<compilerVersion>1.7</compilerVersion>
faites un clic droit sur votre projet dans Eclipse et ouvrez "Run Configurations" .. vérifiez la version de jre ici . Parfois, cela ne changera pas par défaut dans Eclipse, même après avoir changé la version dans le chemin de construction.
Essayez de modifier les paramètres du compilateur Java dans Propriétés dans Eclipse.
Goto: Préférences-> Java-> Compilateur-> Niveau de conformité du compilateur-> 1.7 Appliquer Ok.
Redémarrez l'IDE.
Confirmez les paramètres du compilateur pour le projet - Allez à: Propriétés du projet-> Compilateur Java-> Désélectionnez (utiliser la conformité de l'environnement d'exécution 'JavaSE-1.6' sur le chemin de génération Java.) Et sélectionnez 1.7 dans le menu déroulant. (Ignorer si déjà 1.7)
Redémarrez l'IDE.
Si le problème persiste, exécutez des cas de test individuels à l’aide de la commande terminal-
mvn -Dtest=<test class name> test
Vous ne savez pas exactement ce que le système d'exploitation est utilisé ici, mais vous pouvez éliminer beaucoup de versions Java qui se trouvent dans un fichier debian/ubuntu avec update-Java-alternatives pour définir le système par défaut de jvm.
#> update-Java-alternatives -l
Java-1.6.0-openjdk-AMD64 1061 /usr/lib/jvm/Java-1.6.0-openjdk-AMD64
Java-1.7.0-openjdk-AMD64 1071 /usr/lib/jvm/Java-1.7.0-openjdk-AMD64
Java-6-Sun 63 /usr/lib/jvm/Java-6-Sun
Java-7-Oracle 1073 /usr/lib/jvm/Java-7-Oracle
Pour en définir un nouveau, utilisez:
#> update-Java-alternatives -s Java-7-Oracle
Pas besoin de définir Java_HOME pour la plupart des applications.
{Java_1_4_HOME}/bin/javacyVous pouvez également essayer ...
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<executable>{Java_HOME_1_7}/bin/javac</executable>
<fork>true</fork>
</configuration>
</plugin>
Pour une compilation spécifique nécessitant une machine virtuelle Java (non définie par défaut, /etc/alternatives/Java
), envisagez de préfixer la commande mvn
avec Java_HOME
comme ceci,
Java_HOME=/usr/lib/jvm/Java-7-openjdk-AMD64/ mvn package
Nous supposons ici que la valeur par défaut est Java 8, alors que pour le projet spécifique concerné, nous avons besoin de Java 7.
Vous spécifiez peut-être une version incorrecte de Java . Java -version (dans votre terminal) pour vérifier la version de Java que vous utilisez . Allez à maven-compile-plugin pour le dernier compilateur maven version Votre plugin peut ressembler à ceci si vous utilisez Java 6 et que la dernière version du plugin maven compiler est la version 3.1.
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
Aucune des réponses précédentes n'a complètement résolu mon cas d'utilisation.
Nécessaire pour supprimer le répertoire en cours de construction. Nettoyer. Et puis réinstallez. Ressemble à un problème d'autorisations silencieuses.
J'ai eu ce problème dans IntelliJ IDEA 14 jusqu'à ce que je sois entré dans le menu Fichier -> Structure du projet, changeant le SDK du projet en 1.7 et le niveau de langue du projet en 7.
Ok, je viens de résoudre ce problème moi aussi. Il est plus important que votre Java_HOME, si vous n'avez pas une version inférieure ou aucune version comparée aux propriétés source/cible du plugin Maven, vous obtiendrez cette erreur.
Assurez-vous d’avoir une bonne version dans votre Java_HOME et qu’elle soit incluse dans votre PATH.
J'avais ce problème lorsque je travaillais avec Eclipse, je devais modifier le chemin de génération du projet afin qu'il se réfère à jre