Если у вас возникла эта проблема, убедитесь, что вы не используете Ant 1.8.1, так как существует ошибка в Ant 1.8.1, из-за которой это не работает. (Хотя это не проблема в исходном посте, потому что это было до выпуска Ant 1.8.1).
Ваши варианты:
- Используйте версию Ant, в которой нет ошибки (например, Ant 1.7.1).
- Explicitly specify saxon9.jar in the
CLASSPATH
to Ant before it starts, by either:
- Setting the system
CLASSPATH
environment variable, or
- Используйте параметр командной строки
-lib
для ant
- Определите свою собственную задачу, используя SAXON Ant (как описано в другом ответе в этой теме).
- Обходной путь путем добавления
processor="org.apache.tools.ant.taskdefs.optional.TraXLiaison"
в качестве атрибута элемента задачи xslt
.
Я бы предложил использовать вариант 1, а затем вариант 4.
Вариант 2 будет работать, но он возлагает на человека, управляющего ant, ответственность за настройку своей среды и правильный запуск ant. Я предполагаю, что вы этого не хотите, поэтому вы пытаетесь заставить работать атрибут classpath
в задаче xslt
.
Вариант 3 имеет ограничения, так как SAXON Ant требует загрузки и установки JAR-файла. Также SAXON Ant не работает с SAXON 9.2 или более поздней версии (и SAXON Ant не обновлялся с момента его создания в июне 2008 года).
Теоретически, указание подэлемента factory
делает XSLT-процессор, который вы хотите использовать, явным, чтобы предотвратить обнаружение загрузчиком классов другого XSLT-процессора ранее в его поиске и использование его вместо вашего XSLT-процессора, который находится ниже в CLASSPATH. . На практике (по крайней мере, в ant 1.7.0, 1.7.1 и 1.8.0), если указан подэлемент factory
, задача xslt
игнорирует атрибут classpath
, что означает, что вы должны прибегнуть к явному указанию CLASSPATH (вариант 2). Так что это не помогает решить исходную проблему. Однако это, кажется, было исправлено в исходном коде Ant, поэтому может работать в выпусках после 1.8.1.
person
Hoylen
schedule
18.11.2010