Intellij IDEA Tomcat啟動項目報錯:java.lang.ClassNotFoundException:org.springframework.web.context.xxx

背景

目前Java web工程通常都是通過IDEA module模塊化,分成xxx-admin、xxx-core、xxx-dao、xxx-web等模塊,多個module通過maven管理。這幾個模塊打包一起運行,通常只有xxx-web是個web工程,提供springMVC方式對外提供訪問。
自己使用IDEA也創(chuàng)建了個 多module的工程,出現(xiàn)了一些問題。

Intellij IDEA Tomcat啟動項目報錯:java.lang.ClassNotFoundException:org.springframework.web.context.xxxxx

我是報出ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter

出現(xiàn)這個問題,是因為工程的jar包未被部署。但檢查pom.xml里面的dependency感覺都正常。
注意:在多module的工程,通常在部署到Tomcat上時,都是部署xxx-web這個module模塊。

IDEA菜單依次操作 File >Project Structure >Artifacts >Output Layout >Available Elements

我們先ctrl+shift+alt+s打開Project Structure窗口,選擇Artifacts,選擇要打包部署的項目,在Output Layout –> Web-INF查看是否有l(wèi)ib目錄,如果右邊Available Elements窗口還顯示有jar包,說明這些jar包未添加,則應(yīng)右擊選擇Put into Output Root(put into WEB_INF/lib),這樣就OK了

接著遇到了另一個問題

Web_exploded not found for the web module.
JmxAdminException: com.intellij.execution.ExecutionException
xxxx_Web_explored not found for the web module.

沒有檢測到要部署的web模塊,是因為Tomcat執(zhí)行deployed時,找不到web模塊的Artifact,依次再次進(jìn)入File >Project Structure >Artifacts

將Output directory 指定到web module的target目錄



web.xml的位置

多module工程,還需要注意 WEB-INF/web.xml的位置配置,進(jìn)入File >Project Structure >Modules

可以看到你工程的所有module,可以點擊+號給其中一個module新建一個Web 而使其成為web模塊,點擊中間的鉛筆圖標(biāo),編輯指定WEB-INF/web.xml的位置。我的配置地址為:磁盤路徑/工程名/web模塊名/src/main/webapp/WEB-INF/web.xml。

右側(cè)窗口 中下方的Web Resource Directories,雙擊修改指定路徑到:工程名/web模塊名/src/main/webapp/WEB-INF/web.xml。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容