Каков правильный способ отладки этих проблем?WildFly 8/JBoss: общий способ отладки ошибок привязки Java-загрузчика Java EE
В моем случае у меня есть огромные проблемы с LinkageError в рамках моего веб-проекта Java EE:
Проблема
Я включил JSF API (JBoss-JSF-api_2.2_spec-2.2.5.jar) в мой каталог модулей wildfly, то есть он будет загружен загрузчиком классов Wildfly. У меня есть внешние библиотеки, которые также зависят от реализации JSF (например, Primefaces и OmniFaces). Кроме того, чтобы процесс сборки выполнялся без ошибок, я должен добавить библиотеку в отдельную библиотеку EAR.
Странный способ заключается в добавлении компонента, который реализует функцию с параметрами событий лиц, например.
public void myValueChangeListener(ValueChangeEvent e) {
// do sth.
}
реализации этих функций приводит к ...
10:22:18,571 WARN [org.jboss.modules] (MSC service thread 1-1) Failed to define class javax.faces.event.ValueChangeEvent in Module "javax.faces.api:main" from local module loader @468a169f (finder: local module finder @13d344e7 (roots: /home/user/app-server/wildfly8/modules,/home/user/app-server/wildfly8/modules/system/layers/base)): java.lang.LinkageError: loader constraint violation: loader (instance of org/jboss/modules/ModuleClassLoader) previously initiated loading for a different type with name "javax/faces/event/ValueChangeEvent"
... Отправной точкой для моего ТЯЖЕЛОЙ
10:22:18,578 SEVERE [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-1) Critical error during deployment: : java.lang.LinkageError: loader constraint violation: loader (instance of org/jboss/modules/ModuleClassLoader) previously initiated loading for a different type with name "javax/faces/event/ValueChangeEvent"
(удаление параметра позволяет построить проект без ошибок)
Вопрос
Как справиться с такими проблемами? Мне нужен обзор о порядке загрузки классов. Вероятно, есть способ показать полное дерево загрузчика классов или любой инструмент профилирования, который будет делать то же самое.
Ну, вы имеете право не добавлять библиотеку вручную в проект. Другой проблемой было отсутствие разделения между бизнес-логикой и веб-уровнем. Теперь я удалил конкретную реализацию jsf, но когда я пытаюсь поймать свое событие в моей реализации исполнительского действия, мой компонент не создается при развертывании из-за ошибки загрузки класса: Введите javax.faces.event.ValueChangeEvent из [Module "deployment.myApp .ear.appCore.jar: основной «из загрузчика сервисного модуля» не найден. –