背景
目前Java web工程通常都是通過IDEA module模塊化洛勉,分成xxx-admin、xxx-core、xxx-dao盯捌、xxx-web等模塊,多個(gè)module通過maven管理蘑秽。這幾個(gè)模塊打包一起運(yùn)行饺著,通常只有xxx-web是個(gè)web工程,提供springMVC方式對外提供訪問肠牲。
自己使用IDEA也創(chuàng)建了個(gè) 多module的工程幼衰,出現(xiàn)了一些問題。
Intellij IDEA Tomcat啟動(dòng)項(xiàng)目報(bào)錯(cuò):java.lang.ClassNotFoundException:org.springframework.web.context.xxxxx
我是報(bào)出ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter
出現(xiàn)這個(gè)問題埂材,是因?yàn)楣こ痰膉ar包未被部署塑顺。但檢查pom.xml里面的dependency感覺都正常。
注意:在多module的工程俏险,通常在部署到Tomcat上時(shí)严拒,都是部署xxx-web這個(gè)module模塊。
IDEA菜單依次操作 File >Project Structure >Artifacts >Output Layout >Available Elements
我們先ctrl+shift+alt+s打開Project Structure窗口竖独,選擇Artifacts裤唠,選擇要打包部署的項(xiàng)目,在Output Layout –> Web-INF查看是否有l(wèi)ib目錄莹痢,如果右邊Available Elements窗口還顯示有jar包种蘸,說明這些jar包未添加墓赴,則應(yīng)右擊選擇Put into Output Root(put into WEB_INF/lib),這樣就OK了
接著遇到了另一個(gè)問題
Web_exploded not found for the web module.
JmxAdminException: com.intellij.execution.ExecutionException
xxxx_Web_explored not found for the web module.
沒有檢測到要部署的web模塊航瞭,是因?yàn)門omcat執(zhí)行deployed時(shí)诫硕,找不到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,可以點(diǎn)擊+號(hào)給其中一個(gè)module新建一個(gè)Web 而使其成為web模塊滨彻,點(diǎn)擊中間的鉛筆圖標(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。