有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java错误:部署JSF应用程序时

我正在尝试将JSF war文件部署到jetty服务器中(或者至少我认为是这样)。这是一个“学习项目”,用于部署使用单个JSF托管bean的JSF应用程序。我有一个初始化jetty服务器的main

package root;

import org.eclipse.jetty.server.Server;
//import org.eclipse.jetty.server.handler.ContextHandler.Context;
import org.eclipse.jetty.webapp.WebAppContext;

public class Main {
    public static void main(String[] args) throws Exception {
        String portStr = System.getenv("PORT");
        int port = (portStr == null) ? 8085 : Integer.parseInt(portStr);
        Server server = new Server(port);
        WebAppContext webapp = new WebAppContext();
        webapp.setContextPath("/");
        // change the name of the war as needed.
        webapp.setWar("target/maven_webType_example-1.0-SNAPSHOT.war");
        server.setHandler(webapp);

        server.start();
        server.join();

    }


}

我无法判断这是否与pom或web(或两者)xml文件的xml定义冲突

波姆。xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <version>1.0-SNAPSHOT</version>
    <artifactId>maven_webType_example</artifactId>
    <packaging>war</packaging>
    <dependencies>
        <dependency>            
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>9.3.7.v20160115</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-webapp</artifactId>
            <version>9.3.7.v20160115</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-deploy</artifactId>
            <version>9.3.7.v20160115</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jasper</artifactId>
            <version>9.0.0.M3</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>7.0</version>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>
        <dependency>
            <groupId>com.heroku.sdk</groupId>
            <artifactId>heroku-jdbc</artifactId>
            <version>0.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>javax.faces</artifactId>
            <version>2.2.13</version>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-impl</artifactId>
             <version>2.1.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

    </dependencies>
    <build>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>

                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.10</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals><goal>copy-dependencies</goal></goals>
                        <!--<configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>com.githum.jsimone</groupId>
                                    <artifactId>webapp-runner</artifactId>
                                    <destFileName>webapp-runner.jar</destFileName>
                                    <version>7.0.27.1</version>                                  
                                </artifactItem>
                            </artifactItems>
                        </configuration>-->
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>appassembler-maven-plugin</artifactId>
                <version>1.1.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>assemble</goal>
                        </goals>
                        <configuration>
                            <assembleDirectory>target</assembleDirectory>
                            <generateRepository>true</generateRepository>
                            <programs>
                                <program>
                                    <mainClass>root.Main</mainClass>
                                    <name>webapp</name>
                                </program>
                            </programs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>

网络。xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.expressionFactory</param-name>
        <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.forceLoadConfiguration</param-name>
        <param-value>true</param-value>
    </context-param>
    <container-descriptor>
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
        <!--<prefer-application-resources>
            <resource-name>javax.faces.*</resource-name>
            <resource-name>com.sun.faces.*</resource-name>
            <resource-name>com.bea.faces.*</resource-name>
            <resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
            <resource-name>META-INF/services/com.sun.faces.spi.FacesConfigResourceProvider</resource-name>
        </prefer-application-resources>-->
    </container-descriptor>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30 
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>

</web-app>

执行期间发生的错误: java-verbose:class-cp target/classes:target/dependency/*root/Main

这发生在服务器端。main中的start():

SEVERE: Critical error during deployment:
com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED!
com.sun.faces.vendor.WebContainerInjectionProvider cannot be cast to com.sun.faces.spi.InjectionProvider
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:453)

我看到的大多数建议都与应用程序的资源库存在某种冲突

我正在开发NetBeans,它为网豆添加了一些依赖项,比如glassfish。最终目标是把这个推给Heroku。我对这些库了解不够,无法理解为什么在部署时会发生强制转换

感谢您的帮助。这是我的依赖关系树:

[INFO]
[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ maven_webType_example ---
[INFO] com.example:maven_webType_example:war:1.0-SNAPSHOT
[INFO] +- org.eclipse.jetty:jetty-server:jar:9.3.7.v20160115:compile
[INFO] |  +- org.eclipse.jetty:jetty-http:jar:9.3.7.v20160115:compile
[INFO] |  |  \- org.eclipse.jetty:jetty-util:jar:9.3.7.v20160115:compile
[INFO] |  \- org.eclipse.jetty:jetty-io:jar:9.3.7.v20160115:compile
[INFO] com.example:maven_webType_example:war:1.0-SNAPSHOT
[INFO] +- org.eclipse.jetty:jetty-server:jar:9.3.7.v20160115:compile
[INFO] |  +- org.eclipse.jetty:jetty-http:jar:9.3.7.v20160115:compile
[INFO] |  |  \- org.eclipse.jetty:jetty-util:jar:9.3.7.v20160115:compile
[INFO] |  \- org.eclipse.jetty:jetty-io:jar:9.3.7.v20160115:compile
[INFO] +- org.eclipse.jetty:jetty-webapp:jar:9.3.7.v20160115:compile
[INFO] |  +- org.eclipse.jetty:jetty-xml:jar:9.3.7.v20160115:compile
[INFO] |  \- org.eclipse.jetty:jetty-servlet:jar:9.3.7.v20160115:compile
[INFO] |     \- org.eclipse.jetty:jetty-security:jar:9.3.7.v20160115:compile
[INFO] |     \- org.eclipse.jetty:jetty-security:jar:9.3.7.v20160115:compile
[INFO] +- org.eclipse.jetty:jetty-deploy:jar:9.3.7.v20160115:compile
[INFO] +- org.apache.tomcat:tomcat-jasper:jar:9.0.0.M3:compile
[INFO] |  +- org.apache.tomcat:tomcat-servlet-api:jar:9.0.0.M3:compile
[INFO] |  +- org.apache.tomcat:tomcat-juli:jar:9.0.0.M3:compile
[INFO] |  +- org.apache.tomcat:tomcat-jsp-api:jar:9.0.0.M3:compile
[INFO] |  +- org.apache.tomcat:tomcat-el-api:jar:9.0.0.M3:compile
[INFO] |  +- org.eclipse.jdt.core.compiler:ecj:jar:4.5:compile
[INFO] |  +- org.apache.tomcat:tomcat-jasper-el:jar:9.0.0.M3:compile
[INFO] |  +- org.apache.tomcat:tomcat-api:jar:9.0.0.M3:compile
[INFO] |  \- org.apache.tomcat:tomcat-util-scan:jar:9.0.0.M3:compile
[INFO] |     \- org.apache.tomcat:tomcat-util:jar:9.0.0.M3:compile
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:compile
[INFO] +- javax:javaee-web-api:jar:7.0:compile
[INFO] +- javax:javaee-api:jar:7.0:compile
[INFO] |  \- com.sun.mail:javax.mail:jar:1.5.0:compile
[INFO] |     \- javax.activation:activation:jar:1.1:compile
[INFO] +- com.heroku.sdk:heroku-jdbc:jar:0.1.1:compile
[INFO] +- org.glassfish:javax.faces:jar:2.2.13:compile
[INFO] +- com.sun.faces:jsf-impl:jar:2.1.2:compile
[INFO] +- javax.servlet:jstl:jar:1.2:compile
[INFO] \- taglibs:standard:jar:1.1.2:compile

共 (1) 个答案

  1. # 1 楼答案

    我对pom和web xml文件做了一些更改,并能够启动容器

    新pom。xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.example</groupId>
        <version>1.0-SNAPSHOT</version>
        <artifactId>maven_webType_example</artifactId>
        <packaging>war</packaging>
        <dependencies>
            <dependency>            
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-server</artifactId>
                <version>9.3.7.v20160115</version>
                <optional>true</optional>
            </dependency>
            <! <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-jsp-2.1</artifactId>
                <version>7.5.4.v20111024</version>
            </dependency> >
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-webapp</artifactId>
                <version>9.3.7.v20160115</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-deploy</artifactId>
                <version>9.3.7.v20160115</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-digester3</artifactId>
                <version>3.2</version>
            </dependency>
            <! <dependency>
                <groupId>org.apache.tomcat</groupId>
                <artifactId>tomcat-jasper</artifactId>
                <version>9.0.0.M3</version>
            </dependency> >
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-web-api</artifactId>
                <version>7.0</version>
            </dependency>
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-api</artifactId>
                <version>7.0</version>
            </dependency>
            <dependency>
                <groupId>javax.faces</groupId>
                <artifactId>javax.faces-api</artifactId>
                <version>2.2</version>
            </dependency>   
            <dependency>
                <groupId>javax.faces</groupId>
                <artifactId>jsf-impl</artifactId>
                <version>1.2_15</version>
            </dependency>      
            <dependency>
                <groupId>com.heroku.sdk</groupId>
                <artifactId>heroku-jdbc</artifactId>
                <version>0.1.1</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.web</groupId>
                <artifactId>el-impl</artifactId>
                <version>2.2</version>
            </dependency>
            <! <dependency>
                <groupId>org.glassfish</groupId>
                <artifactId>javax.faces</artifactId>
                <version>2.2.13</version>
            </dependency>
            <dependency>
                <groupId>com.sun.faces</groupId>
                <artifactId>jsf-impl</artifactId>
                <version>2.2.13</version>
            </dependency> >       
            <dependency>
                <groupId>taglibs</groupId>
                <artifactId>standard</artifactId>
                <version>1.1.2</version>
            </dependency>
    
        </dependencies>
        <build>
    
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.5.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>                    
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.10</version>
                    <executions>
                        <execution>
                            <id>copy-dependencies</id>
                            <phase>package</phase>
                            <goals><goal>copy-dependencies</goal></goals>
                            <configuration>
                                <artifactItems>
                                    <artifactItem>
                                        <groupId>com.githum.jsimone</groupId>
                                        <artifactId>webapp-runner</artifactId>
                                        <destFileName>webapp-runner.jar</destFileName>
                                        <version>7.0.27.1</version>                                  
                                    </artifactItem>
                                </artifactItems>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>appassembler-maven-plugin</artifactId>
                    <version>1.1.1</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>assemble</goal>
                            </goals>
                            <configuration>
                                <assembleDirectory>target</assembleDirectory>
                                <generateRepository>true</generateRepository>
                                <programs>
                                    <program>
                                        <mainClass>root.Main</mainClass>
                                        <name>webapp</name>
                                    </program>
                                </programs>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    </project>
    

    新网站。xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
        <context-param>
            <param-name>javax.faces.PROJECT_STAGE</param-name>
            <param-value>Development</param-value>
        </context-param>
        <context-param>
            <param-name>javax.el.expressionFactory</param-name>
            <param-value>javax.el.ExpressionFactoryImpl</param-value>
        </context-param>
        <context-param>
            <param-name>com.sun.faces.forceLoadConfiguration</param-name>
            <param-value>true</param-value>
        </context-param>
        <container-descriptor>
            <prefer-web-inf-classes>true</prefer-web-inf-classes>
            <! <prefer-application-resources>
                <resource-name>javax.faces.*</resource-name>
                <resource-name>com.sun.faces.*</resource-name>
                <resource-name>com.bea.faces.*</resource-name>
                <resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
                <resource-name>META-INF/services/com.sun.faces.spi.FacesConfigResourceProvider</resource-name>
            </prefer-application-resources> >
        </container-descriptor>
        <servlet>
            <servlet-name>Faces Servlet</servlet-name>
            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>Faces Servlet</servlet-name>
            <url-pattern>/faces/*.xhtml</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30 
            </session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>index.xhtml</welcome-file>
        </welcome-file-list>
        <listener>
            <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
        </listener>
    
    </web-app>
    

    唯一的问题是XML无法在页面上呈现(新版本)

    我将搜索新错误:

    SEVERE: Unable to obtain InjectionProvider from init time FacesContext. Does this container implement the Mojarra Injection SPI?