муравей - пытается скопировать в / lib / одобрено, библиотека недоступна в Windows 7 до следующей задачи - PullRequest
0 голосов
/ 15 января 2011

В Windows 7 у меня есть цель ant, которая копирует библиотеку xalan в каталог, одобренный jdk, чтобы выполнить следующую задачу преобразования xslt.

При первом запуске цели ant преобразование xslt завершается неудачно. Второй раз, когда он запускает файл jar, уже находится в правильном месте, и преобразование xslt завершается успешно.

При первом запуске цели ant выглядит, что файл успешно скопирован. Это похоже на временную проблему, но я не знаю, что я могу сделать, чтобы обойти это.

Вот моя задача копирования:

<mkdir dir="${java.home}\lib\endorsed"/>
<copy file="${basedir}\xalan.jar" tofile="${java.home}\lib\endorsed\xalan.jar"/>

Кто-нибудь видел что-нибудь подобное раньше?

Ответы [ 2 ]

1 голос
/ 15 января 2011

Мне кажется, проблема в том, что при выполнении задачи XSLT JVM (которая запускает Ant) уже загрузила классы из одобренного каталога.Вы должны были бы разветвить другой экземпляр JVM после того, как скопировали xalan jar в одобренный каталог.

Что вы используете для запуска xslt?Если это задача XSLT, не могли бы вы просто использовать элемент factory для загрузки xalan?Если это задача Java, используйте атрибут fork, чтобы запустить обработку xslt в другом экземпляре JVM.

0 голосов
/ 15 января 2011

Обычно Java устанавливается в каталог Program Files в Windows 7, поэтому ваш JAVA_HOME будет указывать где-то внутри каталога Program Files, а обычные пользователи не имеют разрешения на создание там новых файлов.

Кроме того, добавление библиотеки в утвержденный путь может иметь побочные эффекты для других программ, поэтому вам лучше использовать атрибут classpath в XSLT-Task:

<xslt classpath="${basedir}\xalan.jar" ... />
...