web-dev-qa-db-fra.com

Définition de la version cible de Java dans ant javac

J'ai besoin de compiler un fichier jar avec ant (1.7.0) pour fonctionner sous une version spécifique de Java (1.5). J'ai actuellement Java 1.6 sur ma machine, j'ai essayé de régler:

<target name="compile">
  <javac compiler="javac1.5" target="1.5" srcdir=.../>
</target>

J'ai aussi enlevé

<property name="build.compiler" value="modern"/>

et il n'y a pas de fichier de propriétés. J'exécute Java 1.6 sous Linux/SUSE

Il existe également un moyen simple de déterminer quelle version de Java est attendue dans le fichier jar.

63
peter.murray.rust

Utilisez l'attribut "cible" et supprimez l'attribut "compilateur". Voir ici . Donc, cela devrait ressembler à ceci:

<target name="compile">
  <javac target="1.5" srcdir=.../>
</target>

J'espère que cela t'aides

87
NawaMan

La source et la cible doivent être spécifiées. Je recommande de fournir ant defaults , de cette manière, vous n'avez pas besoin de spécifier d'attribut source/target pour chaque tâche javac:

<property name="ant.build.javac.source" value="1.5"/>
<property name="ant.build.javac.target" value="1.5"/>

Voir Notes de compilation croisée Java pour plus d'informations.

43
user1338062

Pour trouver la version de Java dans les fichiers de classe que j'ai utilisés:

javap -verbose <classname>

qui annonce la version au début comme

minor version: 0
major version: 49

ce qui correspond à Java 1.5

15
peter.murray.rust

Vous pouvez également définir la propriété {{ant.build.javac.target=1.5}} Ant pour mettre à jour la version cible par défaut de la tâche. Voir http://ant.Apache.org/manual/javacprops.html#target

5
Eugene Petrenko