Scala Maven项目跨包导入对象失败的解决方法
Scala Maven多模块项目跨包导入对象找不到的解决方法
问题场景
Scala Maven多模块项目开发过程中,需要将JavaCCParser对象导入到frontend包下的其他对象中使用,反复核对导入语句的包路径、类名拼写完全正确,但编译器和IDE始终提示找不到目标对象。
排查阶段已确认三个核心信息:
JavaCCParser的实际存放包路径与导入声明的路径完全一致,不存在拼写、大小写错误- 跨包导入的Scala语法编写正确,无语法层面问题
- 最初未检查Maven模块间的依赖配置
问题根因
Maven多模块项目的代码隔离是模块级别的,和包路径没有直接关系。哪怕两个类归属同一个顶层包,只要当前所在模块没有声明对目标类所属模块的依赖,目标模块的代码就不会被加入当前模块的编译类路径,自然会出现类找不到的报错,和导入语句本身是否正确无关。
修复步骤
打开frontend模块下的pom.xml配置文件,在<dependencies>节点中添加JavaCCParser所属模块的依赖配置,保存后刷新Maven依赖、执行一次项目clean重新构建,导入报错就会消失。
配置依赖时注意核对目标模块的
groupId、artifactId、version和其自身pom中声明的一致,同时避免出现A模块依赖B、B模块又依赖A的循环依赖问题。
内容的提问来源于stack exchange,提问作者卓鑫雲
相关产品推荐
相关产品推荐

