簡體   English   中英

WebAppInitializer無法強制轉換為javax.servlet.ServletContainerInitializer

[英]WebAppInitializer cannot be cast to javax.servlet.ServletContainerInitializer

我在運行mvn tomcat7:runmvn tomcat7:run以下mvn tomcat7:run

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/blog-demo]]
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:188)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/blog-demo]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    ... 6 more
Caused by: java.lang.ClassCastException: com.replaceme.WebAppInitializer cannot be cast to javax.servlet.ServletContainerInitializer
    at org.apache.catalina.startup.ContextConfig.getServletContainerInitializer(ContextConfig.java:1670)
    at org.apache.catalina.startup.ContextConfig.getServletContainerInitializers(ContextConfig.java:1652)
    at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1562)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1270)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 6 more

這是我的WebAppInitializer類:

public class WebAppInitializer extends AbstractSecurityWebApplicationInitializer {
    @Override
    public void beforeSpringSecurityFilterChain(ServletContext servletContext) {
        AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();

        ConfigurableEnvironment env = rootContext.getEnvironment();
        env.setDefaultProfiles("production", env.getProperty("user.name"));

        rootContext.scan("com.replaceme.config");

        servletContext.addListener(new ContextLoaderListener(rootContext));

        ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(rootContext));
        servlet.setLoadOnStartup(1);
        servlet.addMapping("/");
    }
}

我在src/main/resources/META-INF/services添加了一個名為javax.servlet.ServletContainerInitializer的文本文件,其中包含類標識符com.replaceme.WebAppInitializer

這是我的Maven依賴項:

[INFO] +- org.hibernate:hibernate-core:jar:4.3.5.Final:compile
[INFO] |  +- org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile
[INFO] |  +- org.jboss.logging:jboss-logging-annotations:jar:1.2.0.Beta1:compile
[INFO] |  +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.0.0.Final:compile
[INFO] |  +- dom4j:dom4j:jar:1.6.1:compile
[INFO] |  |  \- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] |  +- org.hibernate.common:hibernate-commons-annotations:jar:4.0.4.Final:compile
[INFO] |  |  +- (org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile - omitted for duplicate)
[INFO] |  |  \- (org.jboss.logging:jboss-logging-annotations:jar:1.2.0.Beta1:compile - omitted for duplicate)
[INFO] |  +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] |  +- org.javassist:javassist:jar:3.18.1-GA:compile
[INFO] |  +- antlr:antlr:jar:2.7.7:compile
[INFO] |  \- org.jboss:jandex:jar:1.1.0.Final:compile
[INFO] +- org.hibernate:hibernate-validator:jar:5.1.0.Final:compile
[INFO] |  +- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] |  +- (org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile - omitted for duplicate)
[INFO] |  \- com.fasterxml:classmate:jar:1.0.0:compile
[INFO] +- ch.qos.logback:logback-classic:jar:1.0.13:runtime
[INFO] |  +- ch.qos.logback:logback-core:jar:1.0.13:runtime
[INFO] |  \- (org.slf4j:slf4j-api:jar:1.7.5:runtime - omitted for duplicate)
[INFO] +- org.slf4j:slf4j-api:jar:1.7.5:compile
[INFO] +- org.slf4j:jcl-over-slf4j:jar:1.7.5:compile
[INFO] |  \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for duplicate)
[INFO] +- org.codehaus.janino:janino:jar:2.6.1:compile
[INFO] |  \- org.codehaus.janino:commons-compiler:jar:2.6.1:compile
[INFO] +- org.springframework:spring-context:jar:4.0.3.RELEASE:compile
[INFO] |  +- org.springframework:spring-aop:jar:4.0.3.RELEASE:compile
[INFO] |  |  +- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate)
[INFO] |  |  +- (org.springframework:spring-beans:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |  |  \- (org.springframework:spring-core:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- org.springframework:spring-beans:jar:4.0.3.RELEASE:compile
[INFO] |  |  \- (org.springframework:spring-core:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- org.springframework:spring-core:jar:4.0.3.RELEASE:compile
[INFO] |  \- org.springframework:spring-expression:jar:4.0.3.RELEASE:compile
[INFO] |     \- (org.springframework:spring-core:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] +- org.springframework:spring-jdbc:jar:4.0.3.RELEASE:compile
[INFO] |  +- (org.springframework:spring-beans:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- (org.springframework:spring-core:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |  \- org.springframework:spring-tx:jar:4.0.3.RELEASE:compile
[INFO] |     +- (org.springframework:spring-beans:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |     \- (org.springframework:spring-core:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] +- org.springframework:spring-orm:jar:4.0.3.RELEASE:compile
[INFO] |  +- (org.springframework:spring-beans:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- (org.springframework:spring-core:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- (org.springframework:spring-jdbc:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |  \- (org.springframework:spring-tx:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] +- org.springframework:spring-webmvc:jar:4.0.3.RELEASE:compile
[INFO] |  +- (org.springframework:spring-beans:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- (org.springframework:spring-context:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- (org.springframework:spring-core:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- (org.springframework:spring-expression:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |  \- org.springframework:spring-web:jar:4.0.3.RELEASE:compile
[INFO] |     +- (org.springframework:spring-aop:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |     +- (org.springframework:spring-beans:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |     +- (org.springframework:spring-context:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] |     \- (org.springframework:spring-core:jar:4.0.3.RELEASE:compile - omitted for duplicate)
[INFO] +- org.springframework.security:spring-security-config:jar:3.2.3.RELEASE:compile
[INFO] |  +- aopalliance:aopalliance:jar:1.0:compile
[INFO] |  +- org.springframework.security:spring-security-core:jar:3.2.3.RELEASE:compile
[INFO] |  |  +- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate)
[INFO] |  |  +- (org.springframework:spring-aop:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  |  +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  |  +- (org.springframework:spring-context:jar:4.0.3.RELEASE:compile - version managed from 3.2.8.RELEASE; omitted for duplicate)
[INFO] |  |  +- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  |  \- (org.springframework:spring-expression:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  +- (org.springframework:spring-aop:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  +- (org.springframework:spring-context:jar:4.0.3.RELEASE:compile - version managed from 3.2.8.RELEASE; omitted for duplicate)
[INFO] |  \- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] +- org.springframework.security:spring-security-web:jar:3.2.3.RELEASE:compile
[INFO] |  +- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate)
[INFO] |  +- (org.springframework.security:spring-security-core:jar:3.2.3.RELEASE:compile - omitted for duplicate)
[INFO] |  +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  +- (org.springframework:spring-context:jar:4.0.3.RELEASE:compile - version managed from 3.2.8.RELEASE; omitted for duplicate)
[INFO] |  +- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  +- (org.springframework:spring-expression:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  \- (org.springframework:spring-web:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] +- org.springframework.data:spring-data-jpa:jar:1.5.2.RELEASE:compile
[INFO] |  +- org.springframework.data:spring-data-commons:jar:1.7.2.RELEASE:compile
[INFO] |  |  +- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  |  +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  |  +- (org.slf4j:slf4j-api:jar:1.7.5:compile - version managed from 1.7.6; omitted for duplicate)
[INFO] |  |  \- (org.slf4j:jcl-over-slf4j:jar:1.7.5:runtime - version managed from 1.7.6; omitted for duplicate)
[INFO] |  +- (org.springframework:spring-orm:jar:4.0.3.RELEASE:compile - version managed from 3.2.8.RELEASE; omitted for duplicate)
[INFO] |  +- (org.springframework:spring-context:jar:4.0.3.RELEASE:compile - version managed from 3.2.8.RELEASE; omitted for duplicate)
[INFO] |  +- (org.springframework:spring-aop:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  +- (org.springframework:spring-tx:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  +- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE)
[INFO] |  +- org.aspectj:aspectjrt:jar:1.7.4:compile
[INFO] |  +- (org.slf4j:slf4j-api:jar:1.7.5:compile - version managed from 1.7.6; omitted for duplicate)
[INFO] |  \- (org.slf4j:jcl-over-slf4j:jar:1.7.5:runtime - version managed from 1.7.6; omitted for duplicate)
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided
[INFO] +- org.thymeleaf:thymeleaf:jar:2.1.2.RELEASE:compile
[INFO] |  +- ognl:ognl:jar:3.0.6:compile
[INFO] |  +- (org.javassist:javassist:jar:3.16.1-GA:compile - omitted for conflict with 3.18.1-GA)
[INFO] |  \- (org.slf4j:slf4j-api:jar:1.7.5:compile - version managed from 1.6.1; omitted for duplicate)
[INFO] +- org.thymeleaf:thymeleaf-spring4:jar:2.1.2.RELEASE:compile
[INFO] |  +- (org.thymeleaf:thymeleaf:jar:2.1.2.RELEASE:compile - omitted for duplicate)
[INFO] |  \- (org.slf4j:slf4j-api:jar:1.7.5:compile - version managed from 1.6.1; omitted for duplicate)
[INFO] +- cglib:cglib:jar:3.1:compile
[INFO] |  \- org.ow2.asm:asm:jar:4.2:compile

編輯:它也不適用於以下類:

public class WebAppInitializer implements WebApplicationInitializer {
    public void onStartup(ServletContext servletContext) throws ServletException {
        AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();

        ConfigurableEnvironment env = rootContext.getEnvironment();
        env.setDefaultProfiles("production", env.getProperty("user.name"));

        rootContext.scan("com.replaceme.config");

        servletContext.addListener(new ContextLoaderListener(rootContext));

        ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(rootContext));
        servlet.setLoadOnStartup(1);
        servlet.addMapping("/");
    }
}

擴展類AbstractSecurityWebApplicationInitializer com.replaceme.WebAppInitializer類不是javax.servlet.ServletContainerInitializer類的子類型。 因此,不允許您將一種類型的對象類型轉換為另一種類型的對象。 簡單地說,您正在嘗試將狗轉換為驢,這就是引發ClassCastException的原因。 不在同一繼承樹中的對象類型之間無法進行轉換

WebApplicationInitializer(來自Spring)不是ServletContainerInitializer(來自Servlet規范)。 因此,只需從services文件夾中刪除文件javax.servlet.ServletContainerInitializer。 Spring將自動檢測到您的WebAppInitializer(請參閱此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM