#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