2009-09-28 25 views
59

Je dois compiler un fichier jar en utilisant ant (1.7.0) pour s'exécuter sous une version spécifique de Java (1.5). J'ai actuellement Java 1.6 sur ma machine. J'ai essayé de placer:Définition de la version cible de Java dans ant javac

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

J'ai aussi retiré

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

et il n'y a pas de fichier propriétés. Je cours Java 1.6 sur Linux/SUSE

Aussi est-il un moyen simple de déterminer quelle version de Java est attendue dans le fichier jar.

Répondre

81

Utilisez l'attribut "target" et supprimez l'attribut 'compiler'. Voir here. Donc, il devrait aller quelque chose comme ceci:

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

Hope this helps

+5

Je devais aussi utiliser les attributs source et bootclasspath. Voir [ici] (http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#examples) pour un exemple de compilation croisée. (il y a une correspondance directe avec les attributs ant) ​​ –

+3

Ce serait vraiment bien si la réponse pouvait être modifiée pour ajouter 'source' et' bootclasspath' –

14

Pour trouver la version de Java dans les classfiles j'ai utilisé:

javap -verbose <classname> 

qui annonce la version au début comme

minor version: 0 
major version: 49 

qui correspond à Java 1.5

39

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

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

Voir Java cross-compiling notes pour plus d'informations.