web-dev-qa-db-fra.com

Ant utilise une version incorrecte Java

J'utilise Ant 1.7.0 et j'ai installé Java 1.6, qui est dans Java_HOME.

Je veux construire un projet en utilisant Java 1.5, j'ai donc exporté Java_HOME comme répertoire Java 1.5.

Java -version

dit "1,5". Quand j'exécute Ant, il utilise Java 1.6.

66
Diogo Ribeiro

Je viens d'avoir ce problème, c'est parce que j'avais d'abord ajouté le fichier de construction à ant-view lorsque le JRE par défaut était 1.6.

Il n'y avait pas de JRE spécifique au projet et j'ai changé la valeur par défaut à 1.5, même Eclipse fonctionnait dans la version 1.5, et Java_HOME était également à la version 1.5. L'exécution de la cible ant à partir de la ligne de commande utilisait JRE 1.5, mais Eclipse utilisait toujours 1.6.

Je devais cliquer avec le bouton droit sur la cible ant, sélectionner Exécuter en tant que ... et modifier le JRE sous l'onglet JRE. Ce paramètre est mémorisé pour les exécutions suivantes.

71
Lee Kowalkowski

Dans Eclipse:

  • Faites un clic droit sur votre build.xml

  • cliquez sur "Exécuter en tant que", cliquez sur "Configurations d'outils externes ..."

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

Relancez la tâche, ça devrait aller maintenant.

29
bram000

Selon le manuel ant , la configuration de Java_HOME devrait fonctionner - êtes-vous sûr que le paramètre modifié est visible pour ant?

Vous pouvez également utiliser la variable JAVACMD.

19

Vous pouvez utiliser les propriétés cible et source sur la balise javac pour définir un environnement d'exécution cible. L'exemple ci-dessous compilera tout code source afin de 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}">

Remarque: 'srcdir' et 'destdir' sont des valeurs de propriété définies ailleurs, dans le script de construction, par exemple. <property name="classes" value="c:/classes" />

15
simon_d

Exécutez ant en mode verbose: ant -v et cherche des indices.

15
Robert Munteanu

Vous pouvez y parvenir en suivant les étapes ci-dessous, si vous utilisez Eclipse IDE:

  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 d'outils externes ...".

  3. Ajouter les éléments suivants aux "arguments":

    -Dant.build.javac.target=1.5 -Dant.build.javac.source=1.5
    
10
Sheng Chien

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

5
Billy

C'est une question plutôt ancienne, mais je vais ajouter mes notes pour des références futures.

J'avais un problème similaire et je l'ai corrigé en modifiant l'ordre des exportations dans la variable PATH.

Par exemple, j'utilisais une méthode de concaténation de chaînes sur mon PATH (ce n'est qu'un exemple):

$> export PATH='$PATH:'$Java_HOME

Si ma variable PATH contenait déjà un Java, la dernière valeur n'aurait aucun sens, donc l'ordre importerait. 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 dans lequel ANT_HOME était exporté. Ajout de Java_HOME avant ANT_HOME.

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

5
flavio_yama

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
4
Adriano

Si vous n'utilisez pas Eclipse. Ensuite, vous pouvez modifier la propriété ant Java directement sur le fichier, comme indiqué ici.

http://pissedoff-techie.blogspot.in/2014/09/ant-picks-up-incorrect-Java-version.html

2
Utsav Gupta

Définissez votre Java_HOME variable d’environnement avec la version Java requise (dans votre cas Java 1,5)), puis dans build.xml utilisation executable="${Java_HOME}/bin/javac" à l'intérieur <javac></javac> tag.

exemple:

<target name="Java compiler" description="Compiles the Java code">
    <javac executable="${Java_HOME}/bin/javac" srcdir="./src" 
        destdir="${build.dir}/classes"> 
    </javac> 
</target>
1
Vikas Naik

Utilisez les 2 propriétés suivantes pour la balise javac:

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

L'explication des propriétés peut être trouvée ici

1
ArKumar

Si vous exécutez Ant à partir d’Eclipse, Eclipse utilisera jdk ou jre qui est configuré dans le chemin de classe (chemin de construction).

1
zawhtut

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

Dans Eclipse:

  • Faites un clic droit sur votre build.xml, cliquez sur "Exécuter en tant que", puis sur "Configurations d'outils externes ...", sélectionnez l'onglet JRE.

  • Sélectionnez le JRE que vous utilisez.

  • Relancez la tâche, ça devrait aller maintenant.

0
Manohar

Selon la documentation Ant , définissez la variable d’environnement JAVACMD sur le chemin complet de Java.exe de la version de JRE dans laquelle vous souhaitez exécuter Ant.

0
Harry