使用JDK7执行sbt clean compile后Scala Test报Unsupported major.minor version 52.0错误
太懂这种明明sbt test跑一切正常、其他测试也没问题,唯独某一个测试在IntelliJ里报错的憋屈了!我之前也碰到过类似的多模块Scala项目IDE抽风问题,给你几个针对性的排查方向试试:
检查单个测试的专属运行配置
右键出问题的测试文件,选择Run 'XXXTest'->Edit Configurations,仔细核对里面的JRE和Scala SDK是不是和项目全局配置完全一致——有时候手滑会给个别测试单独指定了不同的版本,自己都没注意到。Invalidate Caches 终极玄学修复
IntelliJ的缓存经常搞事情,试试File->Invalidate Caches...,勾选Clear file system cache and local history,然后重启IDE。这个操作比单纯删target彻底得多,很多IDE层面的同步问题都能靠它解决。核对多模块的依赖与目录标记
因为是多模块项目,去File->Project Structure->Modules检查:- 相关模块的源码目录(比如
src/test/scala)是不是被正确标记为Test Sources Root; - 测试依赖的其他模块有没有被正确添加到依赖列表里,有没有漏掉
Testscope的依赖。
- 相关模块的源码目录(比如
手动同步sbt与IntelliJ配置
点击IntelliJ右上角的sbt图标,选择Refresh all sbt projects,强制让IDE重新同步sbt的配置。有时候IDE和sbt的配置同步会有延迟,导致测试找不到正确的classpath。用sbt插件直接运行测试
打开右侧的SBT面板,找到对应模块的test->testOnly,输入出问题的测试类全名运行。如果这样能正常跑通,那基本可以确定是IntelliJ本地的运行配置出了问题,不是项目本身的代码或依赖问题。
内容的提问来源于stack exchange,提问作者dlite922

