No Spring Web ApplicationInitializer types detected
導致這個的原因可能很多而且可能是小的失誤,這裏只是一種情況
1、環境:maven web項目 開發工具idea tomcat8.5.32
編譯輸出路徑
2、現象:項目啓動沒有其他的任何異常
3、解決思路
問題定位:根據No Spring WebApplicationInitializer types detected,通過調用鏈找到tomcat裏面一個類ContextConfig,裏面有個getContextWebXmlSource方法就是加載WEB-INF/web.xml文件的,找到這裏web.xml沒有加載成功,
我這個原因就是:
maven打包出的錯,查看自己在idea中以哪種方式Fix的
如果是第一種你的tomcat的webapps中會有發佈項目並且如果contextpath爲“/”的話項目會直接發佈到ROOT下,如果是第二種tomcat的webapps中沒有發佈項目,但是docBase指向下面目錄
就到這兩個位置查看項目是否完整是否缺少web.xml
解決步驟:
(1)打包把插件版本修改一下最好maven用新一點的我的是3.2,下面的插件放到pom文件中
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
(2)clean
(3)package
(4)idea中啓動項目。要是還不放心 查看輸出目錄是否有完整的項目,就是上面的兩個位置
總結:要是看提到的兩種方式fix的過程,邏輯在ContextConfig------->>>> lifecycleEvent(LifecycleEvent event)中的BEFORE_START_EVENT事件下,並且如果你是在idea中直接啓動的項目tomcat work目錄也不在tomcat路徑下