Установка целевой версии Java в ant javac

Мне нужно скомпилировать файл jar с помощью ant (1.7.0) для запуска под определенной версией Java (1.5). В настоящее время у меня Java 1.6 на моей машине. Я пробовал настройку:

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

Я также удалил

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

и нет файла свойств. Я запускаю Java 1.6 на Linux/SUSE

Также есть простой способ определить, какая версия Java ожидается в файле jar.

Ответ 1

Использовать атрибут "target" и удалить атрибут "компилятор". См. здесь. Поэтому он должен выглядеть примерно так:

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

Надеюсь, что это поможет

Ответ 2

Необходимо указать источник и цель. Я рекомендую предоставить ant defaults, поэтому вам не нужно указывать атрибут source/target для каждой задачи javac:

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

Подробнее см. заметки кросс-компиляции Java.

Ответ 3

Чтобы найти версию java в файлах классов, которые я использовал:

javap -verbose <classname>

который объявляет версию в начале как

minor version: 0
major version: 49

который соответствует Java 1.5

Ответ 4

Вы также можете установить свойство {{ant.build.javac.target=1.5}} ant для обновления целевой задачи задачи по умолчанию. См. http://ant.apache.org/manual/javacprops.html#target