Spring Boot排除snakeyaml后无法启动,能否无该依赖运行?
问题解答
核心结论
snakeyaml仅用于加载YAML格式的配置文件(如application.yml),加载application.properties完全不需要依赖它。
报错原因分析
你的报错信息明确显示:Attempted to load Config resource 'class path resource [application.yml]' but snakeyaml was not found on the classpath,说明Spring Boot启动时仍在尝试加载项目中的application.yml文件——而加载YAML文件必须依赖snakeyaml,你全局排除了这个依赖,导致配置加载失败,进而引发应用启动失败。
你提到的“无法识别application.properties”是表象,实际根源是YAML配置加载失败阻断了整个启动流程,并非properties文件本身无法被加载。
解决方案
根据你的需求,可选择以下任意一种方案:
- 删除YAML配置文件:如果项目不需要
application.yml,直接删除该文件,Spring Boot会自动加载application.properties,无需snakeyaml依赖; - 升级snakeyaml到安全版本:不要直接排除依赖,而是在
build.gradle中指定安全版本的snakeyaml(比如2.0及以上版本已修复已知安全漏洞),示例配置:dependencies { implementation 'org.yaml:snakeyaml:2.2' } - 强制指定加载properties文件:如果需要保留YAML文件但不想加载它,可在启动时通过参数强制指定加载properties,比如执行
gradle bootRun时添加参数:gradle bootRun --args="--spring.config.location=classpath:/application.properties"
内容的提问来源于stack exchange,提问作者user1354825
相关产品推荐
相关产品推荐

