IntelliJ运行Karate集成Gatling测试报找不到Scala2.12.8库如何解决
运行Karate-Gatling测试提示
Cannot find project Scala library 2.12.8 for module修复方案 问题前置背景
- 基于项目现有Karate用例开发Gatling性能场景,已完成.scala仿真类、测试逻辑编写
- 已在pom.xml配置
karate-gatling依赖、gatling-maven-plugin、scala-maven-plugin构建插件 - 手动下载Scala 2.12.8版本库关联到项目模块,完成IntelliJ运行/调试配置
- 环境信息:Ubuntu 20.04、IntelliJ 2022,已安装cucumber+、KarateLab、Scala、Cucumber for Scala插件
- 故障现象:运行测试时抛出Cannot find project Scala library 2.12.8 for module错误,IDE无法识别已配置的Scala库
修复步骤
按顺序操作即可解决:
清理手动关联的本地Scala库,改用Maven托管依赖
手动下载关联Scala库是触发该问题的最常见原因,本地手动安装的Scala包容易出现版本补丁不一致、IDE索引识别失败的问题:- 打开
Project Structure(快捷键Ctrl+Alt+Shift+S) - 分别进入
Global Libraries、Libraries分类,删除所有手动添加的2.12.8版本Scala库条目 - 进入
Modules分类,选中运行测试的目标模块,切换到Dependencies标签,移除所有手动关联的Scala依赖项 - 在pom.xml中显式添加Maven官方源的Scala 2.12.8依赖,版本必须和karate-gatling、Gatling依赖的Scala大版本完全对齐:
<dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.12.8</version> <scope>test</scope> </dependency>- 右键pom.xml,选择
Maven->Reload Project,等待依赖自动拉取完成。
- 打开
校准scala-maven-plugin配置,显式指定编译版本
插件未指定Scala版本会导致Maven编译用的版本和IDE识别的版本不一致,在pom.xml中补全插件配置:<plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>4.8.0</version> <configuration> <scalaVersion>2.12.8</scalaVersion> <args> <arg>-target:jvm-1.8</arg> </args> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions> </plugin>修改完成后再次重载Maven项目。
重新关联IntelliJ Scala SDK
依赖拉取完成后如果仍报错,手动给模块绑定Maven拉取的Scala SDK:- 再次打开
Project Structure->Modules,选中目标模块 - 切换到
Dependencies标签,点击+->Library->Scala SDK - 在弹出的SDK列表中,选择Maven依赖路径下的2.12.8版本Scala(不要选本地手动安装的版本),添加为模块依赖
- 切换到
Sources标签,把存放.scala仿真类的目录(通常是src/test/scala)标记为Test Sources Root
- 再次打开
清理IDE缓存兜底
以上操作完成后仍不生效时,清理IDE缓存重建索引:- 点击顶部菜单
File->Invalidate Caches... - 勾选
Clear file system cache and Local History,点击Invalidate and Restart - 重启后等待索引构建完成,再运行测试。
- 点击顶部菜单
验证技巧
- 优先在项目根目录执行命令
mvn gatling:test验证,如果命令行能正常启动测试,只有IDE内点击运行报错,说明依赖和代码本身没有问题,只需要重新检查IDE的SDK关联配置即可,不需要修改业务代码或pom依赖。
内容的提问来源于stack exchange,提问作者Olivier
相关产品推荐
相关产品推荐

