Ответ 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 больше не создаются.