2009-06-04 10 views
63

J'utilise Ant 1.7.0 et installé java 1.6 qui est dans JAVA_HOME.Ant utilise mauvaise version java

Je veux construire un projet en utilisant java 1.5, donc j'ai exporté JAVA_HOME être mon répertoire java 1.5.

java -version 

indique "1,5". Quand je lance Ant, il utilise java 1.6.

+2

Quel système d'exploitation utilisez-vous? –

+1

Vous pouvez écrire un script batch pour spécifier exactement comment l'exécuter. Si c'est juste la compilation, vous pouvez spécifier la version dans la commande, comme:

Répondre

17

Selon le ant manual, la mise en JAVA_HOME devrait fonctionner - êtes-vous que le paramètre modifié est visible à la fourmi?

Vous pouvez également utiliser la variable JAVACMD.

+1

J'ai le problème moi-même atm et JAVA_HOME pointe vers le bon JDK, mais ant est toujours signaler la mauvaise version de Java. –

12

Exécuter ant en mode verbeux: ant -v et recherche des indices.

+1

Cela m'a beaucoup aidé. J'ai d'abord essayé de construire un projet dans une lib avec jdk 1.8. J'ai découvert plus tard que je devais le construire sur 1.7 à la place, donc jdk 1.7 installé, JAVA_HOME changé, mais toujours ant construire avec le 1.8. En utilisant 'ant -v', j'ai découvert que Ant utilisait correctement jdk1.7, mais la compilation omettait toutes les classes sur le dossier temporaire parce qu'elles étaient déjà là à cause de ma précédente tentative. Donc tout ce que j'ai fait était de supprimer le dossier temporaire, et il les a recréés, cette fois avec jdk 1.7 comme je le voulais. Pour aider quelqu'un –

5

Vous pouvez également spécifier dans une tâche javac quel niveau de compatibilité (1.4, 1.5, 1.6) que vous souhaitez utiliser, vous pouvez définir le niveau « source » et « cible » les valeurs, consultez la documentation ici: Javac task documentation

+1

Pour garantir la compatibilité, ajoutez également l'option '-bootclasspath' lors de la compilation. –

14

Vous pouvez utiliser les propriétés target et source sur la balise javac pour définir un runtime cible. L'exemple ci-dessous compilera n'importe quel code source pour cibler la version 1.4 sur tout compilateur prenant en charge la version 1.4 ou ultérieure.

<javac compiler="classic" taskname="javac" includeAntRuntime="no" fork=" deprecation="true" target="1.4" source="1.4" srcdir="${src}" destdir="${classes}"> 

Note: Le 'srcdir' et 'destdir' sont des valeurs de propriété dans le monde où le script de construction, par exemple <property name="classes" value="c:/classes" />

10

Vous pouvez y parvenir avec les étapes suivantes, si vous utilisez IDE Eclipse:

  1. Faites un clic droit sur la tâche dans votre fichier de construction Ant (build.xml).

  2. Passez la souris sur "Exécuter en tant que", cliquez sur "Configurations externe outil ...".

  3. Ajouter followings à « Arguments »:

    -Dant.build.javac.target=1.5 -Dant.build.javac.source=1.5 
    
67

Juste eu ce problème, il est arrivé parce que je voudrais tout d'abord ajouté le fichier de construction à la fourmi vue lorsque le JRE par défaut était de 1,6.

Il n'y avait pas JRE spécifique au projet et j'ai changé la valeur par défaut à 1,5, même éclipse était en cours d'exécution à 1,5, et 1,5 JAVA_HOME était aussi. L'exécution de la cible Ant à partir de la ligne de commande utilisait JRE 1.5, mais dans Eclipse, elle utilisait toujours 1.6.

j'avais un clic droit sur la cible ant, sélectionnez Exécuter en tant ... et changer le JRE sous l'onglet JRE. Ce paramètre est mémorisé pour les exécutions suivantes.

+5

Je viens de me rendre compte que la question ne mentionnait pas du tout Eclipse. Ma réponse est pour le problème décrit lors de l'utilisation d'Eclipse. –

+1

Merci d'avoir mis fin à quelques heures de frustration. –

+0

si vous n'utilisez pas eclipse alors consultez ma réponse en bas. –

1

Si vous exécutez Ant Eclipse, l'Eclipse utilisera JDK ou JRE qui est configuré dans le chemin de classe (chemin construction).

+0

Oui par défaut, mais il peut être configuré différemment pour chaque fichier ant, donc vérifier tout le monde peut être crucial ... –

+6

Pour savoir avec certitude quelle version de java ant utilise: '' – dmolony

+0

Apprendre à propos de $ {ant.java.version} était une bonne chose pour moi, merci! – javydreamercsw

5

Ceci est plutôt une vieille question, mais j'ajouterai mes notes pour de futures références.

J'ai rencontré un problème similaire et l'ai résolu en modifiant l'ordre des exportations dans la variable PATH.

Par exemple, j'utilisais une méthode de concaténer des chaînes à mon chemin en faisant (ce qui est juste un exemple):

$> export PATH='$PATH:'$JAVA_HOME 

Si ma variable PATH avait déjà un java en elle, la dernière valeur serait sans signification, donc l'ordre aurait de l'importance. Pour résoudre ce problème, j'ai commencé à l'inverser en ajoutant d'abord ma variable, puis en ajoutant le PATH.

Suite à cette idée, j'ai inversé l'ordre d'exportation de ANT_HOME. Ajout de JAVA_HOME avant ANT_HOME.

Cela pourrait être juste une coïncidence, mais cela a fonctionné pour moi.

+0

Cela m'est également arrivé. Je ne savais pas quelle entrée était en conflit avec JAVA_HOME mais quand je l'ai mise au début du PATH, ça a marché. – Inversus

26

Facile!

Dans Eclipse:

  • Faites un clic droit sur votre build.xml

  • cliquez sur "Exécuter en tant que", cliquez sur "Configurations externes outil ..."

  • Sélectionnez onglet JRE. Sélectionnez le JRE que vous utilisez.

Ré-exécuter la tâche, ça devrait aller maintenant.

+0

Merci, c'est exactement ce que je devais faire. –

1

Utilisez les 2 propriétés suivantes pour javac tag:

fork="yes" 
executable="full-path-to-the-javac-you-want-to-use". 

Explaination des propriétés se trouve here

4

fichier de construction:

<target name="print-version"> 
    <echo>Java/JVM version: ${ant.java.version}</echo> 
    <echo>Java/JVM detail version: ${java.version}</echo> 
</target> 

Sortie:

[echo] Java/JVM version: 1.5 
[echo] Java/JVM detail version: 1.5.0_08 
0

According to the Ant Documentation, définissez la variable d'environnement JAVACMD pour compléter chemin vers java.exe de la version JRE que vous voulez exécuter Ant sous.

0

Par défaut, Ant considérera le JRE comme la version JRE de l'espace de travail. Vous devez changer en fonction de votre version requise en suivant les instructions ci-dessous.

Dans Eclipse:

  • Faites un clic droit sur votre clic build.xml "Exécuter en tant que", cliquez sur "outil externe Configurations ..." Sélectionnez l'onglet JRE.

  • Sélectionnez le JRE que vous utilisez.

  • Ré-exécuter la tâche, ça devrait aller maintenant.

Questions connexes