啟動報錯:spring No Spring WebApplicationInitializer types detected on classpath
我通過maven外掛把專案送過去後,馬上就說**war has finished in 1,618 ms,開啟瀏覽器登入找不到404。
看日誌開啟catalina.2017-01-08.log,發現報錯【spring No Spring WebApplicationInitializer types detected on classpath 】
就是說“Spring在類路徑上沒有檢測到WebApplicationInitializer types ”,應該就是初始化型別的錯誤。
網上找了半說:從3.1.0開始在載入前就會先掃描,查詢WebApplicationInitializer實現類。可以通過配置關閉這個功能:
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"metadata-complete="true">
但是,,,,,,我用的是2.5,so...........
----------------------------------------------------------------------------------------------------------------------------------------
metadata-complete="true":web.xml檔案中使用<metadata-complete元素通知Web容器是否要尋找註解,如果你將<metadata-complete設為false,或者在檔案中不指定<metadata-complete元素,那麼在部署期間,容器必須掃描註解和Web分片,為Web應用程式構建有效的元資料。如果將<metadata-complete設為true,將由部署描述符為Web應用程式提供所有的配置資訊。
然後取google了下,說spring mvc .xml檔案找不到。我試著把web.xml檔案的springmvc.xml中檔案加了個s
<init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:sspringmvc.xml</param-value> </init-param>結果報錯說找不到
classpath:sspringmvc.xml
就是說其實檔案是載入到了的。
載入到了就是springmvc本身初始化的問題了
可能是掃描不到。我於是又去掉了
<context:component-scan />試了找不到。然後加上還是找不到。
沒法,spring mvc 本身也沒問題。
最後查程式碼.繼續找bug ,在log中發現 No default constructor found; nested exception is java.lang.NoSuchMethodException: online.**.**.entity.Blogger.<init>()] with root cause
原因出來了吧!!!!!!!!!!! 沒有加空的建構函式。
我寫了個有參建構函式。所以。。。。。。
因為在spring mvc 傳遞的物件引數必須要有無參建構函式,
如果顯示定義了有引數的建構函式,必須現實定義一個無參建構函式,否則引數無法繫結;如果沒有顯示定義了有引數的建構函式,依據開發規範應該必須定義一個無參建構函式
解決:加一個空的建構函式,或則去掉有參建構函式