2013-05-20 57 views
3

我試圖在Tomcat 7上運行Maven項目,但它似乎不起作用。當我從命令提示符下輸入mvn clean tomcat7:run,我得到這個錯誤:Maven項目不能在Tomcat上工作7

SEVERE: A child container failed during start 
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 
Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].Stand 
ardContext[/hitech-store]] 
     at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252) 
     at java.util.concurrent.FutureTask.get(FutureTask.java:111) 
     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.ja 
va:1123) 
     at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java 
:785) 
     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$Sync.innerRun(FutureTask.java:334) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1110) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:603) 
     at java.lang.Thread.run(Thread.java:722) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [St 
andardEngine[Tomcat].StandardHost[localhost].StandardContext[/hitech-store]] 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
     ... 7 more 
Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletCo 
ntainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer 
     at org.apache.catalina.startup.ContextConfig.getServletContainerInitiali 
zer(ContextConfig.java:1657) 
     at org.apache.catalina.startup.ContextConfig.processServletContainerInit 
ializers(ContextConfig.java:1565) 
     at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.jav 
a:1273) 
     at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfi 
g.java:878) 
     at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfi 
g.java:369) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl 
eSupport.java:119) 
     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBa 
se.java:90) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContex 
t.java:5173) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     ... 7 more 

mag 20, 2013 8:05:22 PM org.apache.catalina.core.ContainerBase startInternal 
SEVERE: A child container failed during start 
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 
Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]] 
     at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252) 
     at java.util.concurrent.FutureTask.get(FutureTask.java:111) 
     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.ja 
va:1123) 
     at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine. 
java:302) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.StandardService.startInternal(StandardServic 
e.java:443) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.StandardServer.startInternal(StandardServer. 
java:732) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.startup.Tomcat.start(Tomcat.java:335) 
     at org.apache.tomcat.maven.plugin.tomcat7.run.AbstractRunMojo.startConta 
iner(AbstractRunMojo.java:1018) 
     at org.apache.tomcat.maven.plugin.tomcat7.run.AbstractRunMojo.execute(Ab 
stractRunMojo.java:478) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default 
BuildPluginManager.java:101) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor 
.java:209) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor 
.java:153) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor 
.java:145) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje 
ct(LifecycleModuleBuilder.java:84) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje 
ct(LifecycleModuleBuilder.java:59) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu 
ild(LifecycleStarter.java:183) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl 
eStarter.java:161) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:601) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun 
cher.java:290) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav 
a:230) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La 
uncher.java:409) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java: 
352) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [St 
andardEngine[Tomcat].StandardHost[localhost]] 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
     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$Sync.innerRun(FutureTask.java:334) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1110) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:603) 
     at java.lang.Thread.run(Thread.java:722) 
Caused by: org.apache.catalina.LifecycleException: A child container failed duri 
ng start 
     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.ja 
va:1131) 
     at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java 
:785) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     ... 7 more 

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 11.658s 
[INFO] Finished at: Mon May 20 20:05:22 CEST 2013 
[INFO] Final Memory: 19M/175M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.0: 
run (default-cli) on project hitech-store: Could not start Tomcat: Failed to sta 
rt component [StandardServer[-1]]: Failed to start component [StandardService[To 
mcat]]: Failed to start component [StandardEngine[Tomcat]]: A child container fa 
iled during start -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit 
ch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please rea 
d the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE 
xception 

我已經試過一切,包括嘗試運行在其他計算機上的項目。在4臺電腦中,它運行在2臺,但不在另一臺2.你認爲這是Maven或Tomcat的問題嗎?

+0

嘗試'MVN -U清潔套裝tomcat7:run' – acdcjunior

+0

重複的http://stackoverflow.com/questions/15328363/springservletcontainerinitializer-cannot-be-cast-to-javax-servlet-servletcontain – fmodos

+0

的我試過了,但它的給我同樣的錯誤.. –

回答

1

我遇到了完全一樣的問題,終於解決了。因爲我設置了操作系統環境變量「Path」,其中一個指向我本地安裝的tomcat,刪除了這一個解決。

-1

我有一個類似的問題:

com.sun.jersey.server.impl.container.servlet.JerseyServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer 

我解決它通過添加以下depencency到我的pom.xml:

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
    <scope>provided</scope> 
</dependency> 

你的問題是不同的:

org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer 

但是這也可能是一個依賴性問題。你「簡單地」必須找到你缺少哪個依賴關係。

7

它實際上是尋找合適的版本,我解決它通過使用下面的依賴關係:

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>LATEST</version> 
     <scope>provided</scope> 
    </dependency> 

希望這有助於! PS - 使用正確的版本,我使用最新版本,刪除任何其他與servlet相關的依賴關係,並保留這一個。