Falha na inicialização da aplicação usando PhaseListener

Amigos, bom dia!

Estou com um problema quando tento inicializar a aplicação.

  1. Tenho um PhaseListener que criei para controlar os acessos à area restrita do portal.
  2. Configurei o PhaseListener em meu faces-config.xml
  3. Até ontem a noite tudo funcionava perfeitamente, não alterei nada… mas, agora quando tento subir a aplicação ele dá o erro abaixo.

Jan 20, 2012 11:39:28 AM org.apache.catalina.core.StandardContext listenerStart
Grave: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED!
Source Document: jndi:/localhost/PortalSocioTorcedor/WEB-INF/faces-config.xml
Cause: Unable to find class ‘br.com.seberino.sociotorcedor.web.view.listener.NavegacaoFilter’
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:214)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:200)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)
at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: com.sun.faces.config.ConfigurationException:
Source Document: jndi:/localhost/PortalSocioTorcedor/WEB-INF/faces-config.xml
Cause: Unable to find class ‘br.com.seberino.sociotorcedor.web.view.listener.NavegacaoFilter’
at com.sun.faces.config.processor.AbstractConfigProcessor.createInstance(AbstractConfigProcessor.java:248)
at com.sun.faces.config.processor.LifecycleConfigProcessor.addPhaseListeners(LifecycleConfigProcessor.java:142)
at com.sun.faces.config.processor.LifecycleConfigProcessor.process(LifecycleConfigProcessor.java:115)
at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:108)
at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:133)
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:204)
… 9 more

Meu Faces-Config.xml

    <lifecycle>
        <phase-listener>br.com.seberino.sociotorcedor.web.view.listener.NavegacaoFilter</phase-listener>
    </lifecycle>

Minha Classe PhaseListener

public class NavegacaoFilter implements PhaseListener {

    @Override
    public void afterPhase(PhaseEvent event) {
        FacesContext fc = event.getFacesContext();
        String pagina = fc.getViewRoot().getViewId();
        if (pagina.indexOf("institucional") < 0) {
            if (pagina.indexOf("login") < 0) {
                LoginController loginController = JSFViewUtil.getLoginController();
                boolean logado;
                if (loginController == null) {
                    logado = false;
                } else if (loginController.getTorcedor() != null) {
                    logado = true;
                } else {
                    logado = false;
                }
                if (!logado) {
                    try {
                        fc.getExternalContext().redirect(fc.getExternalContext().getRequestContextPath() + "/paginas/login/login.jsf");
                    } catch (IOException ioe) {
                        System.out.println("erro = " + ioe.getMessage());
                    }
                }
            }
        }
    }

    @Override
    public void beforePhase(PhaseEvent event) {
    }

    @Override
    public PhaseId getPhaseId() {
        return PhaseId.INVOKE_APPLICATION;
    }
    
}

Alguém tem alguma idéia do que pode estar acontecendo? Já revi as LIBs, estão todas como antes… aparentemente nada corrompido (uso a merda do Windows).

Meu ambiente de desenv, caso isso ajude, é Netbeans 7.0.1 e Tomcat 7.0.14.0

Obrigado a todos.

Teria como colocar o pacote da sua classe?

package br.com.seberino.sociotorcedor.web.view.listener.login;

import br.com.seberino.sociotorcedor.web.view.login.LoginController;
import br.com.seberino.sociotorcedor.web.view.util.JSFViewUtil;
import java.io.IOException;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;

/**
 *
 * @author Charles Seberino
 */
public class NavegacaoFilter implements PhaseListener {

    @Override
    public void afterPhase(PhaseEvent event) {
        FacesContext fc = event.getFacesContext();
        String pagina = fc.getViewRoot().getViewId();
        if (pagina.indexOf("institucional") < 0) {
            if (pagina.indexOf("login") < 0) {
                LoginController loginController = JSFViewUtil.getLoginController();
                boolean logado;
                if (loginController == null) {
                    logado = false;
                } else if (loginController.getTorcedor() != null) {
                    logado = true;
                } else {
                    logado = false;
                }
                if (!logado) {
                    try {
                        fc.getExternalContext().redirect(fc.getExternalContext().getRequestContextPath() + "/paginas/login/login.jsf");
                    } catch (IOException ioe) {
                        System.out.println("erro = " + ioe.getMessage());
                    }
                }
            }
        }
    }

    @Override
    public void beforePhase(PhaseEvent event) {
    }

    @Override
    public PhaseId getPhaseId() {
        return PhaseId.INVOKE_APPLICATION;
    }
    
}

Troque de:

<phase-listener>br.com.seberino.sociotorcedor.web.view.listener.NavegacaoFilter</phase-listener>

Para

<phase-listener>br.com.seberino.sociotorcedor.web.view.listener.login.NavegacaoFilter</phase-listener>

Garoto, que BURRADA! Neim me pergunte porque isso aconteceu, eu tava tão certo de que nada foi alterado que não me dei conta de olhar o caminho completo da classe no XML.

Resolvido… ÓBVIO NÉ?

Obrigado a TODOS, principalmente jakefrog

Haha, acontece mano.

As vezes o azul é vermelho até que provem o contrário! O.o