Cannot find project Scala library 2.12 for module

一、问题场景

构建项目时报错 Cannot find project Scala library 2.12 for module xxxx

二、解决方案

在File -> Project Structure中查看对应module的Dependencies,检查依赖包版本是否正确,选中然后点减号去掉旧版本的scala依赖包(一般都是因为替换scala版本时,没有自动清除之前的scala依赖包导致的,这还可能会导致运行时异常java.lang.NoSuchMethodError),Global libraries中有旧版本的也去掉。如果还不行就多删除 /clean几次,直到这里都变成新版本的,项目目录下的External Libraries中也没有旧版本的依赖包为止。或者按照下面第三部分的步骤重新切换一下scala版本。
Cannot find project Scala library 2.12 for module_第1张图片

至于为什么没有自动清除旧版本的依赖包,我猜可能是因为项目中有其他库依赖了旧版本的依赖包。

参考:作为Java开发者我们都遇到过java.lang.NoSuchMethodError错误,究其根源,是JVM的“双亲委托模型”引发的问题。如果在类路径下放置了多个不同版本的类包,如commons-lang2.x.jar 和 commons-lang4.x.jar 都位于类路径中,代码中用到了commons-lang4.x类的某个方法,而这个方法在commons-lang2.x.jar中并不存在,JVM加载器碰巧又从 commons-lang2.x.jar中加载类,运行时就会抛出 NoSuchMethodError的错误。
这种问题的排查通常是比较棘手的,特别是在Web应用中,类路径的系统目录比较多,特别实在类包众多时,情况尤其负责,你很难知道JVM到底从哪个类包中加载类文件。

三、在maven项目中切换scala版本的正确姿势

在maven项目中切换scala版本如果姿势不正确很容易导致一些奇奇怪怪的错误,下面梳理一下完整步骤:

  1. maven clean
    Cannot find project Scala library 2.12 for module_第2张图片

  2. 修改pom文件,修改用到的spark/scala版本号。只修改,不要点右上角Load Maven Changes标识

  3. 打开File -> Project Structure -> Global libraries,点+号添加新版本的scala,然后删掉旧的scala,点apply ok

  4. Build -> Rebuild project

  5. 重新运行一下项目(右上角绿色三角)

  6. 回到pom文件,点一下右上角Load Maven Changes标识。完成
    Cannot find project Scala library 2.12 for module_第3张图片

你可能感兴趣的:(踩坑日记,scala,jvm,java)