解决Gradle引入依赖时报错 Caused by: java.io.FileNotFoundException问题
问题说明:
1、Gradle项目在引入spring配置项加密包:
build.gradle引入依赖:
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5'
启动时报错:
Caused by: java.io.FileNotFoundException: class path resource [com/ulisesbocchio/jasyptspringboot/configuration/EnableEncryptablePropertiesConfiguration.class] cannot be opened because it does not exist
定位过程:
1、查看idea的gradle配置和环境变量,无误
2、项目中配置的先加载maven库,查看配置maven中没有该依赖,说明是gradle自行引入的
3、找到gradle依赖的地址,进入查看是否有该依赖(gradle依赖存储的地址比较复杂,在cache下多个子目录,建议直接通过idea编译器的open in explorer查看),可以看到本地确实有依赖包,初步判断是依赖包没引入全,有类缺失
4 直接通过缺失的类路径查看该类是否存在,点击缺失包的上层旅路径跳转原,查看依赖结构,发现确实不存在该类,猜测应该是依赖传递问题,依赖包内部引入的其他依赖未加载
5.查看该依赖包的pom结构,应该是缺少的这个依赖
6.查看我们的gradle配置,果然禁用了依赖传递
结论:
依赖传递被禁用导致包引入不全
解决方式:
1、方案一:关闭禁用依赖传递的配置(具体看项目情况,若会产生其他依赖冲突等后果则选择其他方案)
2、方案二:手动引入缺失依赖,这里我在build.gradle引入的缺失的依赖com.github.ulisesbocchio:jasypt-spring-boot:3.0.5: 以及它引入的子依赖org.jasypt:jasypt:1.9.3
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5'
implementation 'com.github.ulisesbocchio:jasypt-spring-boot:3.0.5'
implementation('org.jasypt:jasypt:1.9.3')
重新编译运行成功
3、方案三:没有方案三