2012-10-18 3 views
0

J'ai un projet multimodule maven. Je fais un mvn clean install d'un de ses exemples qui télécharge et installe certaines dépendances.Impossible de compiler pour une version Java différente

si je fais un $ file WhateverClass.class dans certains pots de mon WEB-INF/lib téléchargé et compilé par Maven Je continue à obtenir

WhateverClass.class: compiled Java class data, version 51.0 

ce qui signifie que la classe a été compilé avec Java 7.

I obtenir ceci peu importe combien de fois je compile ce module par lui-même d'abord! Pourquoi? J'ai également vérifié les fichiers .class à partir des modules eux-mêmes, après avoir vu comment le dossier cible vient d'être généré.

Le long du projet, certains des POM.xml spécifier un

<configuration> 
    <source>1.5</source> 
    <target>1.5</target> 
</configuration> 

mais il n'y en a pas spécifier une version java supérieure.

Ma version java est:

java version "1.6.0_23" 
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10) 
OpenJDK Client VM (build 20.0-b11, mixed mode, sharing) 

et la version javac:

javac 1.6.0_23 

EDIT

Voici mon effective-pom

Répondre

0

Lorsque vous avez des problèmes comme ça, essayez isoler le p roblem. La première étape consiste à suivre la trajectoire du JAR: Où avez-vous trouvé la classe? D'où vient ce JAR? Si cela venait d'une guerre, d'où cela vient-il? Pour ce faire, jusqu'à ce que vous trouviez l'ordinateur sur lequel le fichier .class est compilé. Vérifiez le fichier JAR et les fichiers .class dans le dossier target/classes/.

A chaque étape, exécutez file sur WhateverClass.class et aller un peu plus loin quand vous voyez Java 7.

Lorsque vous avez trouvé l'ordinateur de construction, vous pouvez utiliser les options suivantes pour déboguer le processus de construction:

  • mvn -v vous montre la version de Maven et Java.
  • mvn help:effective-pom montre le POM résolu (c'est-à-dire après avoir inclus chaque parent POM, résolvant toutes les propriétés, vous le nommez). Quelle option target est active?
  • Exécutez mvn avec -X pour obtenir la sortie de débogage. Cela peut aider à voir quelles options Maven passe aux processus en fourche.
+0

thx @Aaron, je ne sais pas quoi faire. Quand je fais mvn -v je reçois toujours la version Java6. Et en regardant l'efficace-pom (EDIT), je ne vois aucune trace de la cible 1.7. Je ne suis pas sûr de ce que vous entendez par «de quels ordinateurs proviennent les bocaux». – eskalera

+0

Eh bien, si vous avez un fichier sur le disque, ce fichier vient de quelque part. Les disques durs ne génèrent pas soudainement de nouveaux fichiers. Vous devez donc savoir d'où vient un fichier, puis allez-y et répétez. –

Questions connexes