Установите ant bootclasspath: JDK 1.7 имеет новое предупреждение javac для установки более старого источника без bootclasspath - PullRequest
13 голосов
/ 31 августа 2011

Как установить ant bootclasspath в сочетании с -source 1.5 -target 1.5?

Как это не может быть жестко заданным путем к 1.5 JDK? Могу ли я установить переменную окружения в bootclasspath, аналогично тому, как JAVA_HOME можно использовать из ant?

В идеале я хотел бы сделать что-то вроде установки переменной окружения или передать аргумент муравью.

Ответы [ 2 ]

16 голосов
/ 09 сентября 2011

Вот иллюстрация того, как вы можете извлечь расположение загрузочных классов Java 5 из переменной среды, а затем использовать его.

Сначала установите переменную окружения - скажем, JAVA5_BOOTCLASSES. Задача property предоставляет доступ к среде, а затем аргумент bootclasspath задачи javac передает настройку компилятору.

<property environment="env" />
<property name="java5.boot.classpath" value="${env.JAVA5_BOOTCLASSES}" />

<javac source="1.5" target="1.5"
       bootclasspath="${java5.boot.classpath}"
       ...
/>

Обратите внимание, что если переменная окружения не установлена, Ant будет игнорировать ее и продолжит работу без нее - так что компилятор вернется к стандартному пути загрузки по умолчанию.

Другой вариант, если необходимо, это отключить предупреждения и не беспокоиться о пути начальной загрузки. Что-то вроде

<javac srcdir= ... >
    <compilerarg arg="-Xlint:-options" />
</javac>

Но это может подвергнуть вас небольшим ошибкам.

3 голосов
/ 09 мая 2013

Стоит отметить, что переменная JAVA5_BOOTCLASSES должна содержать все необходимые библиотеки, а не только rt.jar.В моем случае это был также jce.jar. Так что лучше установить эту переменную, используя этот простой фрагмент в * nix окружении:

export JAVA5_BOOTCLASSES=""
for i in /usr/lib/jvm/java/jre/lib/*.jar; do 
    export JAVA5_BOOTCLASSES=$JAVA5_BOOTCLASSES:$i
done
...