1. 程式人生 > >啟動報錯:spring No Spring WebApplicationInitializer types detected on classpath

啟動報錯: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 傳遞的物件引數必須要有無參建構函式,

如果顯示定義了有引數的建構函式,必須現實定義一個無參建構函式,否則引數無法繫結;如果沒有顯示定義了有引數的建構函式,依據開發規範應該必須定義一個無參建構函式


解決:加一個空的建構函式,或則去掉有參建構函式