2009-09-28 6 views
59

Necesito compilar un archivo jar usando ant (1.7.0) para ejecutar bajo una versión específica de Java (1.5). Actualmente tengo Java 1.6 en mi máquina. He intentado fijar:Configuración de la versión de destino de Java en ant javac

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

También he quitado

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

y no hay ningún archivo de propiedades. Estoy ejecutando Java 1.6 en Linux/SUSE

También hay una manera simple de determinar qué versión de Java se espera en el archivo jar.

Respuesta

81

Utilice el atributo "objetivo" y elimine el atributo 'compilador'. Ver here. Por lo que debe ser algo como esto:

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

espero que esto ayude

+5

Tuve que usar los atributos source y bootclasspath también. Consulte [aquí] (http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#examples) para obtener un ejemplo de compilación cruzada. (hay correspondencia directa con los atributos de la hormiga) –

+3

Sería muy bueno si la respuesta se pudiera modificar para agregar 'source' y' bootclasspath' –

14

Para encontrar la versión del Java en los archivos de clase que he utilizado:

javap -verbose <classname> 

que anuncia la versión en el inicio como

minor version: 0 
major version: 49 

que corresponde al Java 1,5

39

Deben especificarse tanto la fuente como el destino. Recomiendo proporcionar ant defaults, de esa manera no es necesario especificar el atributo de origen/destino para cada tarea javac:

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

Ver Java cross-compiling notes para más información.

Cuestiones relacionadas