Spring Boot升级后无法引入同项目不同目录下的包问题求助
Spring Boot 2.6.7升级后跨模块导入同前缀包失败的解决思路
问题场景
项目结构如下:
appName --- model --- src ---- main --- basePackageName ---packageOne --- service --- src ---- main ---- basePackageName ---packageTwo
原本在Spring Boot 2.1.6.RELEASE版本中,packageTwo可以正常导入packageOne的类,但升级至2.6.7版本后,所有packageOne的导入语句变灰,Gradle构建时提示无法解析符号,认为packageOne不存在。已确认项目存在@SpringBootApplication注解,且两个包拥有相同前缀:com.example.packageOne和com.example.packageTwo。
启动类代码:
@SpringBootApplication public class Application { public static void main(String[] args) { } }
解决思路
检查Gradle模块依赖配置
service模块需要显式声明对model模块的依赖,在service模块的build.gradle中添加:implementation project(':model')同时确认根目录的
settings.gradle已包含两个模块:include ':model', ':service'显式指定Spring组件扫描范围
尽管两个包前缀相同,仍需确保Spring能扫描到所有需要的包。修改启动类的@SpringBootApplication注解,显式指定扫描根路径:@SpringBootApplication(scanBasePackages = "com.example") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }注意:如果启动类本身就在
com.example包下,默认会扫描该包及其子包,否则必须手动指定扫描范围。清理IDE缓存并同步Gradle
- 清理IDE缓存(如IntelliJ IDEA执行
File -> Invalidate Caches...并重启) - 执行Gradle清理构建命令:
./gradlew clean build - 在IDE中重新同步Gradle项目,确保依赖和源码被正确识别
- 清理IDE缓存(如IntelliJ IDEA执行
验证模块源码路径配置
检查model模块的build.gradle中sourceSets配置,确保源码路径正确指向src/main/java,避免自定义配置导致packageOne的代码未被Gradle识别为可编译的源码。默认配置无需修改,若有自定义配置需确认如下:sourceSets { main { java { srcDir 'src/main/java' } } }
内容的提问来源于stack exchange,提问作者lalala
相关产品推荐
相关产品推荐

