Ответ 1
Здесь ручная процедура:
-
Извлеките
javax.faces.jar
инструментом ZIP. Вы получите 3 папкиcom
,javax
иMETA-INF
. -
Пакеты
com
иMETA-INF
вjsf-impl.jar
с помощью инструмента ZIP. -
Затем удалите все файлы/подпапки в
META-INF
кромеMANIFEST.MF
. -
Пакеты
javax
иMETA-INF
вjsf-api.jar
с помощью инструмента ZIP. -
Продолжайте работать с этими JAR: Обновите JSF/Mojarra в JBoss AS/EAP/WildFly.
Для заинтересованных, JBoss AS и WildFly имеет внутреннее модульное разделение API на основе Java EE и файлов impl. Разделенные файлы JAR jsf-api.jar
и jsf-impl.jar
по-прежнему необходимы. Причина не совсем техническая, а просто дополнительный сервис, который заставляет разработчиков программировать против правильных библиотек. Во время компиляции отображаются только модули API (обычно через интегрированный с IDE плагин, который добавляет их в "путь сборки" ). Это должно избегать случайного поиска, импорта и использования классов реализации, например, в пакете com.sun.faces.*
.
Уже с версии 1.x реализация JSF Mojarra состояла из двух файлов JAR: jsf-api.jar
и jsf-impl.jar
. API JAR содержал классы javax.faces.*
, а JAR реализации содержал классы com.sun.faces.*
. Поскольку изменение системы сборки соответствует правилам Java EE Maven, оба класса API и реализации были объединены в один файл javax.faces.jar
, см. Также issue 2028 (началось с Mojarra 2.1.6 в декабре 2011 года). Начиная с Mojarra 2.3, разделенные файлы JAR больше не создаются.