java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener

У нас три человека, разрабатывающих проект JSF, и раньше мы не были в JSF. Как ни странно, с теми же данными, что и SVN, один из членов команды получает ошибку 404 каждый раз, используя Tomcat 7.0.27.

В то время, когда Tomcat (используется внутри Eclipse) запускается, записывается следующий журнал:

01.06.2012 11:45:16 org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: ...... 01.06.2012 11:45:16 org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:SnapManCloud' did not find a matching property. 01.06.2012 11:45:16 org.apache.coyote.AbstractProtocolHandler init INFO: Initializing ProtocolHandler ["http-bio-8080"] 01.06.2012 11:45:16 org.apache.coyote.AbstractProtocolHandler init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 01.06.2012 11:45:16 org.apache.catalina.startup.Catalina load INFO: Initialization processed in 677 ms 01.06.2012 11:45:16 org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina 01.06.2012 11:45:16 org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.12 01.06.2012 11:45:17 org.apache.catalina.core.StandardContext listenerStart FATAL: Error configuring application listener of class com.sun.faces.config.ConfigureListener java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4638) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5204) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5199) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) 01.06.2012 11:45:17 org.apache.catalina.core.StandardContext listenerStart FATAL: Skipped installing application listeners due to previous error(s) 01.06.2012 11:45:17 org.apache.catalina.core.StandardContext startInternal FATAL: Error listenerStart 01.06.2012 11:45:17 org.apache.catalina.core.StandardContext startInternal FATAL: Context [/SnapManCloud] startup failed due to previous errors 01.06.2012 11:45:17 org.apache.coyote.AbstractProtocolHandler start INFO: Starting ProtocolHandler ["http-bio-8080"] 01.06.2012 11:45:17 org.apache.coyote.AbstractProtocolHandler start INFO: Starting ProtocolHandler ["ajp-bio-8009"] 01.06.2012 11:45:17 org.apache.catalina.startup.Catalina start INFO: Server startup in 1279 ms 

Мы используем Mojarra 2.0.3 как JSF-Реализация, которая была включена Eclipse в проект (и предположительно в путь к classам).

Действительно есть запись для com.sun.faces.config.ConfigureListener в web.xml

  com.sun.faces.config.ConfigureListener  

У кого-нибудь есть отправная точка, где искать ошибку? Кроме того, если требуется дополнительная информация, пожалуйста, дайте мне знать.

JSF обычно поставляется в полноценных серверах приложений Java EE, таких как GlassFish, JBoss AS / EAP, WildFly, WebSphere, WebLogic и т. Д. Однако Tomcat – это barebone JSP / Servlet контейнер, в который входят только API JSP и Servlet, нет API JSF ,

Если вы хотите использовать JSF на Tomcat, вам нужно будет объединить библиотеки JSF вместе с webapp в папке /WEB-INF/lib или установить JSF в Tomcat, поместив библиотеки JSF в папку /lib . По-видимому, это приложение предназначено для реальных серверов приложений Java EE и, следовательно, не связывает библиотеки JSF в /WEB-INF/lib .

Доступны две реализации JSF, Mojarra и MyFaces . Пакет com.sun.faces указывает Mojarra, поэтому загрузите этот файл и поместите его в путь classа webapp (например, в webapp /WEB-INF/lib или в Tomcat’s /lib ).


Другая возможная причина заключается в том, что вы развернули проект на сервер приложений Java EE, который использует MyFaces вместо Mojarra, а проект, по-видимому, был первоначально разработан для Mojarra. Этот слушатель является специфическим для Мохарры. В таком случае вам лучше удалить всю запись из web.xml .

В любом случае, явная регистрация ConfigureListener Mojarra в web.xml фактически необходима только для обхода старых багги-серверов, таких как GlassFish v3 и Jetty, которые не смогли найти слушателя в TLD файла Mojarra. При развертывании на достойном сервере вся запись не нужна.

Смотрите также:

  • Конфигурация com.sun.faces.config.ConfigureListener
  • java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener при использовании MyFaces с WASCE / Geronimo
  • SSL, Tomcat и Grails
  • Проблема CORS - заголовок «Access-Control-Allow-Origin» отсутствует на запрошенном ресурсе
  • Интеграция tomcat и eclipse в качестве среды для быстрого развертывания
  • Как подключиться к базе данных JDBC / источнику данных в приложении на основе сервлета?
  • java.lang.LinkageError: javax.servlet.jsp.JspApplicationContext.getExpressionFactory
  • Ошибка «Диспетчер Struts не может быть найден» при развертывании приложения на WebLogic 12.1.3
  • Tomcat 7.0.73 не работает с java 9
  • Утечка памяти Tomcat Guice / JDBC
  • Как развернуть военный файл в Tomcat 7
  • h: inputText, привязанный к свойству String, представляет пустую строку вместо null
  • Невозможно создать JDBC-драйвер classа '' для подключения URL-адреса 'null': я не понимаю это исключение
  • Давайте будем гением компьютера.