grails не удается создать war

#grails #dependencies #war

#grails #зависимости #Война

Вопрос:

Кто-нибудь видел эту проблему раньше? В чем причина здесь?

Ошибка при выполнении сценария войны: нарушение ограничений загрузчика при инициализации интерфейса: при разрешении метода «groovy.util.XMLParser.setDocumentLocator (Lorg / xml/ sax / Locator;)V» загрузчик класса (экземпляр org / codehaus / groovy/ grails / cli/ support/ GrailsRootLoader) текущего классаgroovy/util/XMLParser и загрузчик классов (экземпляр) для интерфейса org/xml /sax/ContentHandler имеют разные объекты класса для типа org/xml/sax/Locator, используемого в подписи

в java.lang.Class.forName0(собственный метод) в java.lang.Class.forName(Class.java:169) в _GrailsWar_groovy$_run_closure4.class $(_GrailsWar_groovy) в _GrailsWar_groovy$_run_closure4.$получить$$class$groovy$использовать$XMLParser(_GrailsWar_groovy) в _GrailsWar_groovy$_run_closure4.doCall(_GrailsWar_groovy:186) в War$_run_closure1.doCall(War.groovy:38) в gant.Gant $_dispatch_closure5.doCall(Gant.groovy:381) в gant.Gant $_dispatch_closure7.doCall(Gant.groovy:415) в gant.Gant $_dispatch_closure7.doCall(Gant.groovy) в gant.Gant.withBuildListeners(Gant.groovy:427) в
gant.Gant.this$ 2 $withBuildListeners(Gant.groovy) в gant.Gant.Gant $this $2 $withBuildListeners.callCurrent(неизвестный источник) в gant.Gant.dispatch(Gant.groovy:415) в
gant.Gant.this$ 2 $dispatch(Gant.groovy) в gant.Gant.invokeMethod(Gant.groovy) в
gant.Gant.executeTargets(Gant.groovy:590) в
gant.Gant.executeTargets(Gant.groovy:589)

РЕДАКТИРОВАТЬ: Как ответили Тим и Питер ниже, эта проблема является типичной библиотекой xml-api, которая мешает загрузчику классов. После удаления его из каталога ivy cache я смог запустить отчет о зависимостях и четко видеть, что он загружается с помощью hibernate-> dom4j-> xml-api. Я запустил тот же отчет на другом компьютере с той же базой кода и не увидел, что эта зависимость подключается. Итак, я все еще пытаюсь выяснить, что вызвало эту проблему в первую очередь. Быстрым решением для меня было добавить следующее в BuildConfig

 inherits("global") {
       excludes ( "xml-apis", "commons-digester")
    }
  

Комментарии:

1. Я предполагаю, что вы должны объявить переменную GRAIL_HOME как системную переменную

2. Какие плагины вы установили?

3. вы имеете в виду GRAILS_HOME и да, он установлен, иначе вы даже не сможете запустить grails. Что касается плагинов, у меня есть куча: app-info, spring-security, jms, mail, clover, ведение журнала аудита, спящий режим, tomcat

4. Можете ли вы запустить grails dependency-report? Если это не сработает, я предлагаю включить плагины и JAR через DSL зависимостей и исключить «xml-api» из всего. Обратите внимание, что мы автоматически исключаем эти проблемные банки в Grails 2.0.

Ответ №1:

Похоже, что что-то переместило xml-apis модуль в ваш путь к классу.

Иногда виновником является GroovyWS. Вы что-нибудь добавили к зависимостям в последнее время?

Я предполагаю, что проект, используемый для work…so должно быть, это что-то, что кто-то недавно добавил

Оглядываясь назад через систему управления версиями, вы можете увидеть, что это такое…

Или это может быть что-то, что кто-то застрял в JAVA_HOME / lib / ext?

Комментарии:

1. Я пошел к своему C:Users <пользователь>.ivy2каталог кэша и открыл org.grails.internal-<MyProject>-runtime.xml файл и, конечно же, была зависимость xml-api от dom4j от ядра гибернации. Я удалил его из кэша ivy, и временно все снова работает.

2. Вы пробовали Grails 1.4 или 2.0, а затем переключились обратно на Grails 1.3? Если это так, это, вероятно, было причиной проблемы. В этом случае надежным решением является добавление an excludes "xml-apis", "commons-digester" в inherits "global" блок.

3. Питер, большое вам спасибо за ваш комментарий и предложение. Добавление исключений («xml-apis», «commons-digester») в BuildConfig действительно устранило проблему. Я все еще озадачен тем, как эта зависимость проникла туда, поскольку другие машины с той же кодовой базой не имеют этой проблемы. Я (насколько мне известно) не обновлял версию grails, мы находимся на 1.3.7