155 votes

Compilation de code Java 7 via Maven

Mon pom listes de fichiers

    <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, au moment de mvn clean install,- je obtenir

[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 des 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 souligne également la bonne version de Java

/usr/bin/javac -> /Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/bin/javac

Sur cette machine, je suis en utilisant zsh (echo $0 retours -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

Quand je suis en cours d'exécution mvn clean install --debug je vois qu'en fait j'utilise la version 6 de Java

  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 de la source(d) mon .zshrc plusieurs fois.

153voto

Ryan Stewart Points 46960

Vérifier la script dans votre installation de maven pour voir comment c’est la construction la commande. Peut-être vous ou quelqu'un d’autre a codé en dur un dans là et oubliés à ce sujet.

110voto

radai Points 10387

essayez d’utiliser une version plus récente du plugin maven du compilateur :

aussi, en spécifiant le fichier source, codage dans maven est mieux fait dans le monde :

EDIT: comme cette réponse s’attention je tiens juste à souligner que les dernières valeurs actuelles sont 3.1 pour maven plugin de compilateur et 1.8 pour java, comme les questions sur la compilation de code java 8 via maven sont tenues de comparaître bientôt  :-)

48voto

eliocapelati Points 381

J’ai eu le même problème et de résoudre ce problème, j’ai suivi cet article de blog : http://www.mkyong.com/java/how-to-set-java_home-environment-variable-on-mac-os-x/

tks spécial à @mkyong

19voto

Loi Cao Points 111

Vous devez vérifier la version de Maven :

Vous trouverez la version de Java qui utilise de Maven pour la compilation. Vous devrez peut-être réinitialiser JAVA_HOME si nécessaire.

19voto

Chris McCarthy Points 101

J'ai eu le même problème. J'ai trouvé que c'est parce que le script Maven regarde le CurrentJDK lien ci-dessous et trouve un JDK 1.6. Même si vous installez la dernière version du JDK ce n'est pas résolu. Alors que vous pourriez tout simplement JAVA_HOME dans votre $HOME/.bash_profile script, j'ai choisi de fixer le lien symbolique plutôt 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 points à 1.6.0.jdk

Pour le fixer, j'ai couru les commandes suivantes (vous devriez vérifier votre version installée et d'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

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