Это конкретное исключение может быть вызвано отсутствующим файлом jsf-api.jar
в пути к классам или другой версией jsf-api.jar
в пути к классам, в отличие от jsf-impl.jar
WAR, возможно, предоставленного приложением-сервером. В теории есть 3 способа решить эту проблему:
- Избавьтесь от всех JAR-файлов JSF (
jsf-api.jar
и jsf-impl.jar
) в WAR и используйте библиотеки JSF, предоставляемые сервером приложений.
- Избавьтесь от всех JSF JAR в WAR и предоставьте их только в EAR.
- Выровняйте все JAR-файлы JSF в WAR, чтобы они имели одинаковую марку / версию / сборку.
Другая причина может заключаться в том, что WAR включает в себя специфичные для appserver библиотеки, которые, в свою очередь, содержат классы JSF, такие как Glassfish javaee.jar
. Все эти специфичные для appserver библиотеки должны быть удалены из всех WAR и EAR.
Кстати, содержите путь к классам в чистоте.