2017-09-05 1 views
1

Je suis en train de configurer mon application pour exécuter avec Tomcat 8 et JSF 2.3, mais je reçois cette erreur:NPE ConfigureListener Tomcat 8 + JSF 2.3

RAVE: Critical error during deployment: 
java.lang.NullPointerException 
    at java.util.Objects.requireNonNull(Objects.java:203) 
    at javax.el.CompositeELResolver.add(CompositeELResolver.java:47) 
    at com.sun.faces.el.DemuxCompositeELResolver.addRootELResolver(DemuxCompositeELResolver.java:142) 
    at com.sun.faces.el.ELUtils.addEL3_0_Resolvers(ELUtils.java:336) 
    at com.sun.faces.el.ELUtils.buildFacesResolver(ELUtils.java:258) 
    at com.sun.faces.application.ApplicationAssociate.initializeELResolverChains(ApplicationAssociate.java:499) 
    at com.sun.faces.application.ApplicationImpl.performOneTimeELInitialization(ApplicationImpl.java:1404) 
    at com.sun.faces.application.ApplicationImpl.getELResolver(ApplicationImpl.java:526) 
    at javax.faces.application.ApplicationWrapper.getELResolver(ApplicationWrapper.java:621) 
    at javax.faces.application.ApplicationWrapper.getELResolver(ApplicationWrapper.java:621) 
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:256) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4743) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5207) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:748) 

sep 05, 2017 12:14:51 PM org.apache.catalina.core.StandardContext listenerStart 
GRAVE: Excepción enviando evento inicializado de contexto a instancia de escuchador de clase com.sun.faces.config.ConfigureListener 
java.lang.RuntimeException: java.lang.NullPointerException 
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:315) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4743) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5207) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:748) 
Caused by: java.lang.NullPointerException 
    at java.util.Objects.requireNonNull(Objects.java:203) 
    at javax.el.CompositeELResolver.add(CompositeELResolver.java:47) 
    at com.sun.faces.el.DemuxCompositeELResolver.addRootELResolver(DemuxCompositeELResolver.java:142) 
    at com.sun.faces.el.ELUtils.addEL3_0_Resolvers(ELUtils.java:336) 
    at com.sun.faces.el.ELUtils.buildFacesResolver(ELUtils.java:258) 
    at com.sun.faces.application.ApplicationAssociate.initializeELResolverChains(ApplicationAssociate.java:499) 
    at com.sun.faces.application.ApplicationImpl.performOneTimeELInitialization(ApplicationImpl.java:1404) 
    at com.sun.faces.application.ApplicationImpl.getELResolver(ApplicationImpl.java:526) 
    at javax.faces.application.ApplicationWrapper.getELResolver(ApplicationWrapper.java:621) 
    at javax.faces.application.ApplicationWrapper.getELResolver(ApplicationWrapper.java:621) 
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:256) 
    ... 9 more

Mon pom.xml est la suivante :

<properties> 

    <!-- Librerias JSF --> 
    <omnifaces.version>2.6.4</omnifaces.version> 
    <prettyfaces.version>3.3.3</prettyfaces.version> 
    <primefaces.version>6.1</primefaces.version> 
    <primefaces.themes.version>1.0.10</primefaces.themes.version> 
    <primefaces-extensions.version>6.1.1</primefaces-extensions.version> 
    <javax.faces.version>2.3.2</javax.faces.version> 
    <javax.el.api.version>3.0.0</javax.el.api.version> 

    <!-- Spring --> 
    <spring.version>4.3.10.RELEASE</spring.version> 

    <!-- Servlet --> 
    <jstl.version>1.2</jstl.version> 
    <javax.servlet.api.version>4.0.0</javax.servlet.api.version>   

    <!-- CDI --> 
    <weld.servlet.shaded.version>3.0.0.Final</weld.servlet.shaded.version> 
    <cdi.api.version>2.0</cdi.api.version> 

    <!-- Hibernate --> 
    <hibernate.show_sql>true</hibernate.show_sql> 
    <hibernate.generate_ddl>true</hibernate.generate_ddl> 
</properties> 

<dependencies> 

    <!-- JSF dependencies --> 
    <dependency> 
     <groupId>org.glassfish</groupId> 
     <artifactId>javax.faces</artifactId> 
     <version>${javax.faces.version}</version> 
    </dependency> 

    <!-- JSF 2 y expresiones EL RI --> 
    <dependency> 
     <groupId>javax.el</groupId> 
     <artifactId>javax.el-api</artifactId> 
     <version>${javax.el.api.version}</version> 
    </dependency> 

    <!-- Spring dependencies --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <!-- Prettyfaces dependencies --> 
    <dependency> 
     <groupId>com.ocpsoft</groupId> 
     <artifactId>prettyfaces-jsf2</artifactId> 
     <version>${prettyfaces.version}</version> 
    </dependency> 

    <!-- Omnifaces dependencies --> 
    <dependency> 
     <groupId>org.omnifaces</groupId> 
     <artifactId>omnifaces</artifactId> 
     <version>${omnifaces.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.validation</groupId> 
     <artifactId>validation-api</artifactId> 
     <version>1.0.0.GA</version> 
    </dependency> 

    <!-- JSF Primefaces --> 
    <dependency> 
     <groupId>org.primefaces.themes</groupId> 
     <artifactId>flick</artifactId> 
     <version>${primefaces.themes.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.primefaces</groupId> 
     <artifactId>primefaces</artifactId> 
     <version>${primefaces.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.primefaces.extensions</groupId> 
     <artifactId>primefaces-extensions</artifactId> 
     <version>${primefaces-extensions.version}</version> 
    </dependency> 

    <!-- Servlet --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>${javax.servlet.api.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>${jstl.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.weld.servlet</groupId> 
     <artifactId>weld-servlet-shaded</artifactId> 
     <version>${weld.servlet.shaded.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.enterprise</groupId> 
     <artifactId>cdi-api</artifactId> 
     <version>${cdi.api.version}</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

J'ai la configuration suivante dans mon /WEB-INF/context.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<Context allowCasualMultipartParsing="true"> 
    <Resource name="BeanManager" 
     auth="Container" 
     type="javax.enterprise.inject.spi.BeanManager" 
     factory="org.jboss.weld.resources.ManagerObjectFactory" /> 
</Context> 

J'utilise Tomcat 8.5.14 et Java 1.8.0_131.

J'ai essayé d'enlever Primefaces, juste au cas où il était lié, et l'erreur ne disparaît pas.

Ai-je des bibliothèques manquantes, peut-être que les versions sont erronées?

Merci.

Répondre

0

Avez-vous des JAR qui traînent dans votre projet en plus des dépendances Maven? J'avais el-impl-2.2.jar (vestige de l'ancien temps) dans mon projet, et apparemment cela causait un conflit. J'ai supprimé le fichier jar et la partie suivante de web.xml:

<context-param> 
    <param-name>com.sun.faces.expressionFactory</param-name> 
    <param-value>com.sun.el.ExpressionFactoryImpl</param-value> 
</context-param> 

Maintenant, l'application démarre sans erreur.