2

我正在尝试将我的应用程序设置为与 Tomcat 8 和 JSF 2.3 一起运行,但出现此错误:

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

2017 年 9 月 5 日下午 12:14:51 org.apache.catalina.core.StandardContext listenerStart
GRAVE: Excepción enviando eventto inicializado de contexto a instancia de escuchador de clase com.sun.faces.config.ConfigureListener
java.lang.RuntimeException: java.lang.NullPointerException
    在 com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:315)
    在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4743)
    在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5207)
    在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
    在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
    在 java.util.concurrent.FutureTask.run(FutureTask.java:266)
    在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    在 java.lang.Thread.run(Thread.java:748)
引起:java.lang.NullPointerException
    在 java.util.Objects.requireNonNull(Objects.java:203)
    在 javax.el.CompositeELResolver.add(CompositeELResolver.java:47)
    在 com.sun.faces.el.DemuxCompositeELResolver.addRootELResolver(DemuxCompositeELResolver.java:142)
    在 com.sun.faces.el.E​​LUtils.addEL3_0_Resolvers(ELUtils.java:336)
    在 com.sun.faces.el.E​​LUtils.buildFacesResolver(ELUtils.java:258)
    在 com.sun.faces.application.ApplicationAssociate.initializeELResolverChains(ApplicationAssociate.java:499)
    在 com.sun.faces.application.ApplicationImpl.performOneTimeELInitialization(ApplicationImpl.java:1404)
    在 com.sun.faces.application.ApplicationImpl.getELResolver(ApplicationImpl.java:526)
    在 javax.faces.application.ApplicationWrapper.getELResolver(ApplicationWrapper.java:621)
    在 javax.faces.application.ApplicationWrapper.getELResolver(ApplicationWrapper.java:621)
    在 com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:256)
    ... 9 更多

我的 pom.xml 是下一个:

<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>

我在我的下一个设置/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>

我正在使用 Tomcat 8.5.14 和 Java 1.8.0_131。

我已经尝试删除 Primefaces,以防万一它是相关的,并且错误不会消失。

我错过了一些图书馆吗?,也许版本是错误的?

谢谢。

4

1 回答 1

1

除了 Maven 依赖项之外,您的项目中是否还有任何 JAR?我的项目中有el-impl-2.2.jar(过去的遗留物),显然它正在引起冲突。我从 web.xml 中删除了 jar 和以下部分:

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

现在应用程序启动没有错误。

于 2018-01-04T13:32:42.147 回答