1. 程式人生 > >java.util.concurrent.ExecutionException----啟動tomcat失敗

java.util.concurrent.ExecutionException----啟動tomcat失敗

最近在學習maven管理分散式專案,maven如何建立管理分散式專案網上資料很多這邊就不說了,主要記錄下我啟動專案時遇到的一個問題java.util.concurrent.ExecutionException。

分散式專案,子專案需要單獨啟動。我將他們當作tomcat專案分別啟動。首先我配置了一個tomcat7的server來啟動service專案(Fragrans-Whites-Sys-Service),ok,service啟動成功。然後重新配置了一個server來啟動web專案(Fragrans-Whites-Web),問題來了。

嚴重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[null].StandardContext[/Fragrans-Whites-Sys-Service]]
        at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
        at java.util.concurrent.FutureTask.get(FutureTask.java:83)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1120)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
        at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[null].StandardContext[/Fragrans-Whites-Sys-Service]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
        ... 7 more
Caused by: java.lang.NullPointerException
        at java.util.Hashtable.put(Hashtable.java:394)
        at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:5185)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5386)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        ... 7 more
2016-9-8 15:44:43 org.apache.catalina.core.ContainerBase startInternal
嚴重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[null]]
        at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
        at java.util.concurrent.FutureTask.get(FutureTask.java:83)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1120)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:444)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:738)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:693)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[null]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
        at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1128)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        ... 7 more
2016-9-8 15:44:43 org.apache.catalina.startup.HostConfig deployWAR
資訊: Deploying web application archive E:\Program Files\apache-tomcat-7.0.68\webapps\Fragrans-Whites-Web.war
2
網上百度了很多的資料,大部分都是說這個錯誤的原因是web.xml檔案配置有問題引起的,或者是jar包衝突的問題。但是我這邊明顯不一樣。在糾結了很久之後,還是求助了我們技術老大(沒錯,博主就是這樣的一隻菜鳥)。

然後發現,雖然建立了兩個server但這兩個server實際是引用了同一個tomcat,第二個server本身就有問題,與專案程式碼無關。同一個tomcat同時只能啟動一個server,如果要啟動多個專案,可以部屬多個tomcat來依次啟動,或者將多個專案部屬在同一個server下(注意專案之間的依賴關係)啟動。

因為博主的兩個專案一個是service專案一個是web專案,所以還可以先通過main函式來啟動service專案,再通過tomcat來啟動web專案解決問題。