Tomcat - 启动期间子容器失败 - 将maven转换为gradle

时间:2016-11-01 09:22:24

标签: spring maven tomcat gradle

我将项目从maven转换为gradle 在启动我的tomcat服务器时进行转换后,我收到以下错误日志。

  

严重:子容器在启动时失败   java.util.concurrent.ExecutionException:   org.apache.catalina.LifecycleException:无法启动组件   [StandardEngine [卡塔利娜] .StandardHost [本地主机] .StandardContext [/ Tabserve-超级管理员]]     在java.util.concurrent.FutureTask.report(FutureTask.java:122)at   java.util.concurrent.FutureTask.get(FutureTask.java:192)at   org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1120)     在   org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819)     在   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)     在   org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1572)     在   org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1562)     在java.util.concurrent.FutureTask.run(FutureTask.java:266)at   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617)     在java.lang.Thread.run(Thread.java:745)引起:   org.apache.catalina.LifecycleException:无法启动组件   [StandardEngine [卡塔利娜] .StandardHost [本地主机] .StandardContext [/ Tabserve-超级管理员]]     在   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)     ... 6更多引起:java.lang.NoSuchMethodError:   javax.servlet.ServletContext.getVirtualServerName()Ljava /郎/字符串;     在   org.apache.tomcat.websocket.server.WsServerContainer。(WsServerContainer.java:147)     在org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131)at   org.apache.tomcat.websocket.server.WsSci.onStartup(WsSci.java:47)at   org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5573)     在   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)     ......还有6个

     

2016年11月1日下午2:37:10 org.apache.catalina.core.ContainerBase   startInternal SEVERE:启动时子容器失败   java.util.concurrent.ExecutionException:   org.apache.catalina.LifecycleException:无法启动组件   [StandardEngine [Catalina] .StandardHost [localhost]] at   java.util.concurrent.FutureTask.report(FutureTask.java:122)at   java.util.concurrent.FutureTask.get(FutureTask.java:192)at   org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1120)     在   org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)     在   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)     在   org.apache.catalina.core.StandardService.startInternal(StandardService.java:444)     在   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)     在   org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:756)     在   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)     在org.apache.catalina.startup.Catalina.start(Catalina.java:693)at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:498)at   org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)at at   org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428)导致   by:org.apache.catalina.LifecycleException:无法启动组件   [StandardEngine [Catalina] .StandardHost [localhost]] at   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)     在   org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1572)     在   org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1562)     在java.util.concurrent.FutureTask.run(FutureTask.java:266)at   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617)     在java.lang.Thread.run(Thread.java:745)引起:   org.apache.catalina.LifecycleException:子容器失败   在开始时   org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1128)     在   org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819)     在   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)     ......还有6个

     

2016年11月1日下午2:37:10 org.apache.catalina.startup.Catalina开始   严重:所需的服务器组件无法启动,因此Tomcat是   无法开始。 org.apache.catalina.LifecycleException:失败   启动组件[StandardServer [8005]] at   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)     在org.apache.catalina.startup.Catalina.start(Catalina.java:693)at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:498)at   org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)at at   org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428)导致   by:org.apache.catalina.LifecycleException:无法启动组件   [StandardService [Catalina]] at   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)     在   org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:756)     在   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)     ... 7更多引起:org.apache.catalina.LifecycleException:失败   启动组件[StandardEngine [Catalina]]   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)     在   org.apache.catalina.core.StandardService.startInternal(StandardService.java:444)     在   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)     ... 9更多引起:org.apache.catalina.LifecycleException:一个孩子   容器在启动时失败   org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1128)     在   org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)     在   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)     ......还有11个

这些是我的依赖

apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'war'

war {
    baseName = 'MyApp'
    version = '0.0.1'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'lib')
    compile project(':Model_v102')

    compile("org.springframework:spring-core:3.1.0.RELEASE")
    compile("org.springframework:spring-context-support:3.1.0.RELEASE")
    compile("org.springframework:spring-beans:3.1.0.RELEASE")
    compile("org.springframework:spring-context:3.1.0.RELEASE")
    compile("org.springframework:spring-tx:3.1.0.RELEASE")
    compile("org.springframework:spring-jdbc:3.1.0.RELEASE")
    compile("org.springframework:spring-orm:3.1.0.RELEASE")
    compile("org.springframework:spring-web:3.1.0.RELEASE")
    compile("org.springframework:spring-jms:3.1.0.RELEASE")
    compile("dom4j:dom4j:1.1")
    compile("cglib:cglib:2.1_3")
    compile("com.google.code.gson:gson:1.7.1")
    compile("org.projectlombok:lombok:1.12.4")
    compile("org.apache.commons:commons-io:1.3.2")
    compile("commons-fileupload:commons-fileupload:1.2.2")
    compile('commons-codec:commons-codec:1.7')
    compile("org.jasypt:jasypt:1.7.1")
    compile("net.sf.ehcache:ehcache-core:2.5.2")
    compile("commons-lang:commons-lang:2.6")
    compile("org.slf4j:slf4j-api:1.6.1")
    compile("javassist:javassist:3.12.0.GA")
    compile("com.sun.faces:jsf-api:2.1.7")
    compile("com.sun.faces:jsf-impl:2.1.7")
    compile("javax:javaee-api:6.0")
    compile("org.hibernate:hibernate-validator:4.3.0.Final")
    compile("org.hibernate:hibernate-core:3.5.1-Final")
    compile("org.hibernate:hibernate-annotations:3.5.1-Final")
    compile("mysql:mysql-connector-java:5.1.15")
    compile("org.primefaces:primefaces:3.5")
    compile("joda-time:joda-time:2.1")
    compile("c3p0:c3p0:0.9.1.1")
    //compile("javax.servlet:jstl:1.2")
    compile("com.caucho:resin-hessian:4.0.1")
    compile("org.apache.poi:poi:3.7")
    compile("com.itextpdf:itextpdf:5.0.6")
    compile("net.sf.jasperreports:jasperreports:6.1.0")
    compile("org.quartz-scheduler:quartz:2.1.1")
    compile("log4j:log4j:1.2.15")
    //providedCompile("org.apache.tomcat:tomcat-catalina:7.0.29")
    testCompile("junit:junit")
}

2 个答案:

答案 0 :(得分:2)

根本原因是:

java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String

Servlet 3.1中添加了此方法。您确定要部署到正确的Tomcat版本吗?

答案 1 :(得分:1)

正如@chkal所说,看起来servlet-api的不同版本在类路径上。尝试从命令行

比较以下内容

mvn dependency:tree(来自旧版maven)

gradle dependencies(来自gradle构建)

我猜测servlet-api版本在maven vs gradle build中有所不同。 Maven将使用“最接近定义获胜”策略来解析工件的多个版本,而gradle将使用最新版本。请注意,您可以customise the way that gradle resolves dependencies