• java.lang.reflect.InvocationTargetException null,依赖版本,配置文件的地址都对了。但还是出现这个错误。


    一、问题描述

    在启动微服务时总是报java.lang.reflect.InvocationTargetException: null 错误

    经检查,发现是nacos 配置管理的 spring-cloud-starter-alibaba-nacos-config 依赖报出的。

    查阅资料说,要么是依赖版本问题,要么是nacos服务地址没配置。

    但我这个这两项都没问题,可以排除掉了。

    二、问题研究

    于是多番尝试发现,当我把配置文件改成properties时候惊奇的发现就可以了

    那为什么properties与yml配置文件参数都一样,而效果却截然不同。

    三、原因

    1、配置文件类型的不同

    在查阅资料后,知道了,原来配置文件的类型也有讲究。

    application.yml,application.properties两个虽然都是配置文件,但是他们是有区别的。properties优先级高于yml,但似乎根优先级没什么关系,因为我的配置文件要么是properties,要么是yml。这里我怀疑他们的加载方式应该也是不一样的。但我又没证据。

    2、配置文件名的不同

    后来我又发现application.yml 和bootstrap.yml是有区别的。

    优先级不同,若application.yml 和bootstrap.yml 在同一目录下:bootstrap.yml 先加载 application.yml后加载

    bootstrap.yml 用于应用程序上下文的引导阶段,它是由父Spring ApplicationContext加载。默认情况下,他是不会被其他配置覆盖。

    然后我把application.yml改成bootstrap.yml重新启动。。。。

    然后就解决了。

    四、总结

    配置信息都一致,配置文件类型或命名不同时。

    类型

    结果

    application.yml

    false

    application.properties

    true

    bootstrap.yml

    true

    当出现java.lang.reflect.InvocationTargetException: null,依赖版本没问题,nacos服务地址配置没问题。不妨检查一下。我们的配置文件类型,配置文件的命名。

    所以我这里的问题就在于application.yml,bootstrap.yml命名的区别。

    最后

    深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

    因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

    小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。

  • 相关阅读:
    软考 系统架构设计师系列知识点之软件质量属性(5)
    SQL优化方法汇总
    计算机专业,不擅长打代码,考研该怎么选择?
    【FreeCodeCamp】 ResponsiveWebDesign网页设计 测试2学习笔记
    RabbitMQ基础
    进程状态和优先级【Linux】
    iperf/iperf3 测试网络性能
    Mybatis 拦截器 说明和使用 (二)
    python项目在麒麟V10上无法启动rabbitmq的问题记录
    “拍视频”成为小程序的基础能力
  • 原文地址:https://blog.csdn.net/m0_67402026/article/details/126801801