有時候我們經常發出一個感慨,剛剛啟動並執行時候明明還好好的,怎麼忽然就不行了。其實並沒有什麼本來好好的,好像什麼都沒改,忽然就不行了。事出必有因,肯定是你剛剛修改到哪裡了。
錯誤提示:
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at java.util.concurrent.FutureTask.report(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1119)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:444)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:756)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.startup.Catalina.start(Catalina.java:693)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428)
問題的兩種可能解決方案:
1.這個問題一般是由過濾器引起的。檢查web.xml中的servlet映射裡面的<url-pattern>,看<url-pattern></url-pattern>中配置的內容是否缺少“/” ,"/"表示當前web應用。
2.不同的servlet使用了相同的@WebServlet標註。在Servlet上設定@WebServlet標註,容器就會自動讀取當中的資訊。
舉個栗子說:
當使用者請求的URL是"/DeviceList",則由DeviceList的執行個體提供服務。