異常解決SpringBoot項目啟動卡住,無任何異常信息問題
項目場景
SpringBoot項目啟動的時候Console控制臺日志打印卡住,無任何異常信息打印
問題描述
之前項目是好的,但是后面經(jīng)人寫了一部分代碼之后,項目啟動不了
SpringBoot項目啟動時直接卡住,日志也不打印,也沒有具體的異常信息,某位同事折騰一天。
原因分析
之前我遇到過類似的問題。
現(xiàn)在我把我所有的問題分析列在下面:
- 有可能是改動了pom.xml文件,項目沒有徹底更新,導(dǎo)致引入的jar存在版本問題或者根本沒有引入進來
 - 項目是Debug模式啟動,然后有一些特殊的斷點導(dǎo)致項目啟動卡住
 - 項目的目錄結(jié)構(gòu)變更,導(dǎo)致某些bean沒有被加載到?或者加載了多個相同的bean
 - 某些異常沒有被捕獲到,同時啟動類里面也沒有加上全局的try-catch,導(dǎo)致項目卡住
 - 部分代碼需要隨程序自啟,使用@PostConstruct、InitializingBean、ApplicationRunner等方式實現(xiàn)項目初始化時加載,如果有遠程連接,而且連接失敗或者異常了,沒有try-catch,也容易導(dǎo)致啟動程序卡死。
 
解決方案
針對上述列出來的分析,我們可以采用以下解決方案,一步步嘗試
- 1.如果是pom.xml變更了沒生效,我們只需要對pom.xml 重新import即可,另外可以考慮清除idea緩存
 - 2.如果是debug模式的斷點引起的話,去掉所有斷點再試試
 - 3.如果是項目目錄結(jié)構(gòu)變更,這個maven clean一下,重新install 即可
 - 4.如果可以變更啟動類的話,建議在開發(fā)階段對啟動類的main方法里面的代碼加上try-catch,這樣啟動項目的時候就知道具體異常是什么
 - 5.如果說分析哪些程序自啟的代碼導(dǎo)致項目啟動卡住的話,我建議查看項目啟動快照,具體如下:
 

分析當(dāng)前主線程到底因為什么卡住(waiting),比如我這里是因為數(shù)據(jù)源配置的有問題導(dǎo)致卡住
最終解決方案
6、如果上述方案都無法解決問題,那么可以查看項目啟動日志文件,一般和項目同級目錄或者有個log目錄存儲,里面會記錄所有信息/異常信息
例如:這里是我同事的異常:


異常分析:
是因為他從另外一個項目copy過來的mapper.xml文件,之前用的是mybatis,現(xiàn)在項目用的ibatis,不識別<where>標(biāo)簽,ibatis只支持<dynamic prepend="where"> 來用
改成ibatis識別的方式即可。 這里注重給大家講怎么去找到并分析異常。
總結(jié)
項目啟動卡住了,肯定是有異常原因存在,我們需要的是沉著冷靜,一步步找問題所在。
另外就是大家在CV代碼時,尤其是兩個不同的項目的時候,一定要注意細(xì)節(jié)?。?/p>
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
 基于Java編寫一個簡單的內(nèi)部網(wǎng)段掃描程序
這篇文章主要為大家詳細(xì)介紹了如何基于Java編寫一個簡單的內(nèi)部網(wǎng)段掃描程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解下2025-02-02
 SpringBoot+Querydsl?框架實現(xiàn)復(fù)雜查詢解析
本篇主要將介紹的是利用spring query dsl框架實現(xiàn)的服務(wù)端查詢解析和實現(xiàn)介紹,對SpringBoot?Querydsl?查詢操作感興趣的朋友一起看看吧2022-05-05
 Java Integer.valueOf()和Integer.parseInt()的區(qū)別說明
這篇文章主要介紹了Java Integer.valueOf()和Integer.parseInt()的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
 SpringBoot中使用EasyExcel并行導(dǎo)出多個excel文件并壓縮zip后下載的代碼詳解
SpringBoot的同步導(dǎo)出方式中,服務(wù)器會阻塞直到Excel文件生成完畢,在處理大量數(shù)據(jù)的導(dǎo)出功能,本文給大家介紹了SpringBoot中使用EasyExcel并行導(dǎo)出多個excel文件并壓縮zip后下載,需要的朋友可以參考下2024-09-09
 詳解java操作Redis數(shù)據(jù)庫的redis工具(RedisUtil,jedis工具JedisUtil,JedisPoo
這篇文章主要介紹了java操作Redis數(shù)據(jù)庫的redis工具,包括RedisUtil,jedis工具JedisUtil,JedisPoolUtil工具,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-08-08
 使用springboot開發(fā)的第一個web入門程序的實現(xiàn)
這篇文章主要介紹了使用springboot開發(fā)的第一個web入門程序的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
 spring boot使用thymeleaf跳轉(zhuǎn)頁面實例代碼
本篇文章主要介紹了spring boot使用thymeleaf跳轉(zhuǎn)頁面,實例介紹了thymeleaf的原理和介紹,有興趣的可以了解一下。2017-04-04

