WSL Ubuntu环境Maven报Unable to load cache item错误如何解决
报错根因
这是典型的版本不兼容问题:WSL环境中通过Ubuntu apt源安装的Maven 3.6.3内置的cglib、Guice依赖版本过低,无法适配Java 17的字节码生成、类加载规则,触发com.google.inject.internal.cglib.core.$MethodWrapper类初始化失败。Windows原生命令行运行无异常,是因为Windows侧安装的Maven版本更高,已经完成JDK17适配。
解决方法
两种方案二选一即可:
方案1(推荐):升级WSL内Maven到JDK17兼容版本
Maven 3.8.0及以上版本已原生支持JDK17,操作步骤:
- 卸载apt安装的旧版Maven:
sudo apt remove maven -y
- 下载3.8.x或3.9.x系列Maven二进制压缩包,解压到
/opt/maven目录 - 编辑当前用户的shell配置文件(使用bash则编辑
~/.bashrc,使用zsh则编辑~/.zshrc),追加环境变量配置:
export MAVEN_HOME=/opt/maven export PATH=$MAVEN_HOME/bin:$PATH
- 执行
source ~/.bashrc(对应自己使用的shell配置文件)让配置生效,执行mvn -version确认版本号≥3.8.0后,mvn命令即可正常运行。
方案2:保留Maven 3.6.3,降级WSL内JDK版本
如果项目有特殊约束必须使用Maven 3.6.3,可将WSL内默认JDK切换到兼容的JDK 8或JDK 11版本:
- 安装OpenJDK 11:
sudo apt install openjdk-11-jdk -y
- 执行版本切换命令,在弹出的选项中选中刚安装的openjdk-11作为系统默认Java版本:
sudo update-alternatives --config java
- 修改
JAVA_HOME环境变量指向JDK11的安装路径,重新加载shell配置后即可正常使用mvn命令。
注意:不要把Windows侧的Java、Maven路径加入WSL的PATH环境变量,跨系统调用Win32程序容易触发额外的兼容性问题。
内容的提问来源于stack exchange,提问作者CrazySynthax
相关产品推荐
相关产品推荐

