Вопрос по jsf – NoClassDefFoundError (Digester) с Tomcat и MyFaces

0

Я хорошо использовал Tomcat с Eclipse. Теперь я не могу запустить сервер. Я получаю следующее исключение при попытке запуска. Все работало отлично. Я не знаю, что что-то изменило, но, очевидно, что-то изменилось.

Apr 7, 2012 12:28:29 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.apache.myfaces.webapp.StartupServletContextListener
java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
    at org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshallerImpl.<init>(DigesterFacesConfigUnmarshallerImpl.java:42)
    at org.apache.myfaces.config.FacesConfigurator.getUnmarshaller(FacesConfigurator.java:262)
    at org.apache.myfaces.config.FacesConfigurator.feedStandardConfig(FacesConfigurator.java:566)
    at org.apache.myfaces.config.FacesConfigurator.configure(FacesConfigurator.java:487)
    at org.apache.myfaces.webapp.AbstractFacesInitializer.buildConfiguration(AbstractFacesInitializer.java:296)
    at org.apache.myfaces.webapp.Jsp21FacesInitializer.initContainerIntegration(Jsp21FacesInitializer.java:73)
    at org.apache.myfaces.webapp.AbstractFacesInitializer.initFaces(AbstractFacesInitializer.java:118)
    at org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:111)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.digester.Digester
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
    ... 18 more
Apr 7, 2012 12:28:29 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Apr 7, 2012 12:28:29 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/webApp_appNameT] startup failed due to previous errors
Apr 7, 2012 12:28:29 PM org.apache.catalina.core.StandardContext listenerStop
SEVERE: Exception sending context destroyed event to listener instance of class org.apache.myfaces.webapp.StartupServletContextListener
java.lang.IllegalStateException: No Factories configured for this Application. This happens if the faces-initialization does not work at all - make sure that you properly include all configuration settings necessary for a basic faces application and that all the necessary libs are included. Also check the logging output of your web application and your container for any exceptions!
If you did that and find nothing, the mistake might be due to the fact that you use some special web-containers which do not support registering context-listeners via TLD files and a context listener is not setup in your web.xml.
A typical config looks like this;
<listener>
  <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>

    at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:172)
    at org.apache.myfaces.context.servlet.FacesContextImplBase.getApplication(FacesContextImplBase.java:131)
    at org.apache.myfaces.webapp.AbstractFacesInitializer._dispatchApplicationEvent(AbstractFacesInitializer.java:239)
    at org.apache.myfaces.webapp.AbstractFacesInitializer.destroyFaces(AbstractFacesInitializer.java:273)
    at org.apache.myfaces.webapp.StartupServletContextListener.contextDestroyed(StartupServletContextListener.java:153)
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4819)
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5466)
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Apr 7, 2012 12:28:29 PM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application [/webApp_appNameT] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [[email protected]]) and a value of type [org.apache.myfaces.config.RuntimeConfig] (value [[email protected]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
Apr 7, 2012 12:28:29 PM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application [/webApp_appNameT] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [[email protected]]) and a value of type [org.apache.myfaces.context.servlet.StartupFacesContextImpl] (value [[email protected]3]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
Apr 7, 2012 12:28:29 PM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application [/webApp_appNameT] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [[email protected]]) and a value of type [org.apache.myfaces.context.servlet.StartupFacesContextImpl] (value [[email protected]b]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
Apr 7, 2012 12:28:29 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Apr 7, 2012 12:28:29 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Apr 7, 2012 12:28:29 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1756 ms
Я действительно не знал бы, куда это пошло. Dave Newton
Развертываемые библиотеки; Вы пропускаете хотя бы обычный дайджест. Dave Newton
@DaveNewton, где я должен поместить банку обыкновенного реактора? Это работало 30 минут назад, так что мое замешательство, что с ним случилось? Dale
Каков ваш процесс сборки? Используете ли вы maven или какой-либо другой инструмент для сборки, конфигурация которого могла измениться? Суть в том, каковы были изменения в окружающей среде с последнего времени, когда оно работало, до того времени, когда оно остановилось. Shahzeb

Ваш Ответ

2   ответа
4

У меня такая же проблема. Webapp и Tomcat в Eclipse работали хорошо, затем затмение застыло; Мне пришлось убить его с помощью TaskManager. Однако, когда я перезапустил Tomcat, выше ошибка java.lang.NoClassDefFoundError: org / apache / commons / digester / Digester появился.

Это не имело смысла, потому что раньше веб-приложение работало хорошо. Я решил этоcleaning the eclipse tomcat webapp directory.

  1. Go to the Servers tab -> Right click on your webapp -> Clean Module directory.
  2. Go to the Servers tab -> Right click on used Tomcat instance -> Clean...

После этого ошибка исчезла, и веб-приложение снова запустилось, как и раньше.

3

Caused by: java.lang.ClassNotFoundException: org.apache.commons.digester.Digester

Это просто говорит о том, что упомянутый класс отсутствует в пути к классам во время выполнения. Как видно из названия пакета, это Apache Commons Digester, который доступен по адресуhttp://commons.apache.org/digester, Если вы загружаете файл JAR и перетаскиваете его по одному из путей, указанных в пути к классам среды выполнения веб-приложения, например/WEB-INF/lib, то эта проблема должна исчезнуть.

Я добавил этот jar-файл в / WEB-INF / lib и получил те же результаты. Этой банки не было 30 минут назад, когда она работала. Есть еще идеи? Dale

Похожие вопросы