欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring?boot應(yīng)用無法啟動也沒報(bào)錯信息的解決辦法

 更新時間:2025年11月05日 10:08:11   作者:常樂_smile  
在使用Spring Boot開發(fā)應(yīng)用程序時,偶爾會遇到啟動不起來的問題,這是一種讓人沮喪的情況,尤其是當(dāng)日志中沒有任何錯誤信息時,這篇文章主要介紹了spring?boot應(yīng)用無法啟動也沒報(bào)錯信息的解決辦法,需要的朋友可以參考下

問題描述

springboot應(yīng)用昨天還能正常好好啟動,忽然之間就啟動不了了,也不報(bào)任何錯誤,只見到控制臺輸出"Stopping service".這個問題已經(jīng)連續(xù)出現(xiàn)過3次了,這次狠下決心要找出個所以然。

在此,先說下個人經(jīng)歷的前面三次無法啟動沒有報(bào)錯。

舉例說明

第一次:和環(huán)境有關(guān)

當(dāng)某個中間件無法連接的時候,我們的同事在try catch中錯誤的使用了System.exit()導(dǎo)致異常;

try{
  ……
}catch(Exception e){
  System.exit();
  log.error(e)
}

第二次:和jar包沖突有關(guān)

當(dāng)時項(xiàng)目中用到了hbase,需要集成hbase,所以引入了hbase-client 2.1.0 版本,但是該包對curator包版本有要求,導(dǎo)致和其他組件的curator版本沖突,最終程序輸出的信息中,只有幾行INFO日志。

2019-09-12 10:39:30.350  INFO 37343 --- [5311@0x040943a6] org.apache.zookeeper.ZooKeeper           : Session: 0x16b72a291d73e73 closed
2019-09-12 10:39:30.351  INFO 37343 --- [3a6-EventThread] org.apache.zookeeper.ClientCnxn          : EventThread shut down for session: 0x16b72a291d73e73
2019-09-12 10:39:30.566  INFO 37343 --- [tor-Framework-0] o.a.c.f.imps.CuratorFrameworkImpl        : backgroundOperationsLoop exiting

最終通過jar包沖突,不斷試錯,不斷對比和其他能正常啟動應(yīng)用的依賴,才解決沖突。

第三次:和代碼編寫有關(guān)

也就是剛剛發(fā)生的,讓筆者決定狠下心挖掘"無報(bào)錯信息"的罪魁禍?zhǔn)住R欢ㄊ怯挟惓5?,只是不知道在哪個環(huán)節(jié)丟失了。

先說結(jié)論:本次"無緣無故"無法啟動的原因,其實(shí)是昨天筆者開發(fā)過程中,代碼中添加了一個dubbo服務(wù)依賴,但是沒有在dubbo xml文件中注冊reference,所以導(dǎo)致依賴缺失,最終應(yīng)用起不來。

當(dāng)然,和前面幾次一樣,控制臺,日志文件,沒有任何地方有錯誤信息輸出。

排查分析

根據(jù)下面這篇文章,給出了提示。

引用:SpringBoot啟動項(xiàng)目后自動關(guān)閉: https://blog.csdn.net/laoxilaoxi_/article/details/83654186

先說結(jié)論:不是沒有輸出異常,是新版本的Spring boot 在出錯后,不再輸出錯誤到控制臺了,而是將異常在Application main方法中拋出。

劃重點(diǎn):新版本Spring boot 2.x 不再輸出錯誤到日志中,將異常在Application main方法中拋出。 而低版本Spring boot 1.3.x,1.4.x版本,是會直接在控制臺輸出錯誤的。

解決方法

**解決:**有了上面的靈感,那好辦我在main 啟動方法中捕捉,自己打印,不就能看出來錯誤原因了嗎?

事實(shí)上,確實(shí)應(yīng)該如此。

最后,筆者在main方法啟動spring boot 時,進(jìn)行一場捕捉并輸出日志。然后錯誤就一目了然了。

@Slf4j
@ImportResource("classpath*:spring-*.xml")
@SpringBootApplication
public class SupportApplication {
    public static void main(String[] args) {
        try {
            SpringApplication.run(SupportApplication.class, args);
            System.out.println("Server startup done.");
        }catch (Exception e){
            log.error("服務(wù)xxx-support啟動報(bào)錯", e);
        }
    }
}

最終在控制臺輸出久違的異常信息:

2019-09-12 11:18:18.799 ERROR 38420 --- [           main] c.c.xxx.support.xxxSupportApplication    : 服務(wù)xxx-support啟動報(bào)錯

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxxController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'xxxCoreService': Unsatisfied dependency expressed through field 'xxxSpotService'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.test.xxx.api.service.XxxSpotService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:321) ~[spring-context-5.0.10.RELEASE.jar:5.0.10.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336) ~[spring-beans-5.0.10.RELEASE.jar:5.0.10

擴(kuò)展驗(yàn)證

接下來讓我們驗(yàn)證下低版本Spring boot 1.3.x,1.4.x版本,是否會直接在控制臺輸出錯誤。

下面的實(shí)驗(yàn)是基于spring boot 1.4.7版本進(jìn)行的,低版本的spring boot 都會在控制臺或日志文件中先輸出錯誤信息,再退出啟動main方法。所以,對于從低版本升到高版本的,請?jiān)趍ain啟動時,自行捕捉異常。

@Controller
@RequestMapping("/test")
public class TestErrorController {
  /**
   * 1.制造一個不存在的Spring bean;
   * 2.并對其進(jìn)行依賴;
   * 3.啟動應(yīng)用XxxApplication;
   * 4.控制臺有明顯報(bào)錯信息輸出;
   * 2019-09-12 10:44:38.014 INFO 37477 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
   * 2019-09-12 10:44:38.026 INFO 37477 --- [ main] utoConfigurationReportLoggingInitializer :
   *
   * <p>Error starting ApplicationContext. To display the auto-configuration report re-run your
   * application with 'debug' enabled. 2019-09-12 10:44:38.155 ERROR 37477 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
   * <p>*************************** APPLICATION FAILED TO START ***************************
   * <p>Description:
   * <p>A component required a bean of type
   * 'cn.test.lee.service.TestErrorService' that could not be found.
   * <p>Action:
   * <p>Consider defining a bean of type 'cn.test.service.TestErrorService'
   * in your configuration.
   * <p>Disconnected from the target VM, address: '127.0.0.1:57403', transport: 'socket'
   * <p>Process finished with exit code 1
   */
    @Resource 
    private TestErrorService testErrorService;

    public String testError(){
        testErrorService.testError();
        return "啟動就報(bào)錯了!";
    }
}

總結(jié) 

到此這篇關(guān)于spring boot應(yīng)用無法啟動也沒報(bào)錯信息解決辦法的文章就介紹到這了,更多相關(guān)spring boot應(yīng)用無法啟動沒報(bào)錯信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Servlet簡單實(shí)現(xiàn)登錄功能

    Servlet簡單實(shí)現(xiàn)登錄功能

    這篇文章主要為大家詳細(xì)介紹了Servlet簡單實(shí)現(xiàn)登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Spring @Primary作用和實(shí)現(xiàn)原理詳解

    Spring @Primary作用和實(shí)現(xiàn)原理詳解

    今天分享一下Spring中的@Primary注解,Primary的意思是主要的,我們在使用spring的時候,難免會定義多個類型相同的bean,這時候如果不采取一些方法,那么是無法正常使用bean的,所以本就給大家介紹Spring @Primary的作用和實(shí)現(xiàn)原理
    2023-07-07
  • 深入解析反編譯字節(jié)碼文件中的代碼邏輯JVM中的String操作

    深入解析反編譯字節(jié)碼文件中的代碼邏輯JVM中的String操作

    這篇文章主要介紹了深入解析反編譯字節(jié)碼文件中的代碼邏輯JVM中的String操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • springboot啟動過程中常用的回調(diào)示例詳解

    springboot啟動過程中常用的回調(diào)示例詳解

    springboot提供非常豐富回調(diào)接口,利用這些接口可以做非常多的事情,本文通過實(shí)例代碼給大家介紹springboot啟動過程中常用的回調(diào)知識感興趣的朋友跟隨小編一起看看吧
    2022-01-01
  • Java報(bào)錯:java.util.concurrent.ExecutionException的解決辦法

    Java報(bào)錯:java.util.concurrent.ExecutionException的解決辦法

    在Java并發(fā)編程中,我們經(jīng)常使用java.util.concurrent包提供的工具來管理和協(xié)調(diào)多個線程的執(zhí)行,va并發(fā)編程中,然而,在使用這些工具時,可能會遇到各種各樣的異常,其中之一就是java.util.concurrent.ExecutionException,本文將詳細(xì)分析這種異常的背景、可能的原因
    2024-09-09
  • 詳解前后端分離之Java后端

    詳解前后端分離之Java后端

    這篇文章主要介紹了詳解前后端分離之Java后端,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • spring?boot配置dubbo方式(properties)

    spring?boot配置dubbo方式(properties)

    這篇文章主要介紹了spring?boot配置dubbo方式(properties),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Java特性隊(duì)列和棧的堵塞原理解析

    Java特性隊(duì)列和棧的堵塞原理解析

    這篇文章主要介紹了Java特性隊(duì)列和棧的堵塞原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • synchronized?和?Lock?的異同點(diǎn)(如何讓選擇)

    synchronized?和?Lock?的異同點(diǎn)(如何讓選擇)

    這篇文章主要介紹了?synchronized和Lock的異同點(diǎn)(如何讓選擇),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Java執(zhí)行可執(zhí)行文件的三種方法詳解

    Java執(zhí)行可執(zhí)行文件的三種方法詳解

    這篇文章主要為大家詳細(xì)介紹了Java中執(zhí)行可執(zhí)行文件的三種方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的小伙伴可以參考一下
    2024-02-02

最新評論