73

I need to compile a jar file using ant (1.7.0) to run under a specific version of Java (1.5). I currently have Java 1.6 on my machine. I have tried setting:

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

I have also removed

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

and there is no properties file. I am running Java 1.6 on Linux/SUSE

Also is there a simple way of determining which version of Java is expected in the jar file.

peter.murray.rust
  • 37,407
  • 44
  • 153
  • 217

4 Answers4

92

Use "target" attribute and remove the 'compiler' attribute. See here. So it should go something like this:

<target name="compile">
  <javac target="1.5" srcdir=.../>
</target>
starball
  • 20,030
  • 7
  • 43
  • 238
NawaMan
  • 25,129
  • 10
  • 51
  • 77
50

Both source and target should be specified. I recommend providing ant defaults, that way you do not need to specify source/target attribute for every javac task:

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

See Java cross-compiling notes for more information.

user1338062
  • 11,939
  • 3
  • 73
  • 67
15

To find the version of the java in the classfiles I used:

javap -verbose <classname>

which announces the version at the start as

minor version: 0
major version: 49

which corresponds to Java 1.5

peter.murray.rust
  • 37,407
  • 44
  • 153
  • 217
5

You may also set {{ant.build.javac.target=1.5}} ant property to update default target version of task. See http://ant.apache.org/manual/javacprops.html#target

peter.murray.rust
  • 37,407
  • 44
  • 153
  • 217
Eugene Petrenko
  • 4,874
  • 27
  • 36