java · 2024-01-11 0

maven malformed \uxxxx or \u0000 encoding error

IntelliJ IDEA 执行maven命令(或者自动导入maven项目)时,报如下错误:

[ERROR] Malformed \uxxxx encoding.

这个问题经常出现在本地存在多个Maven版本来回切换的时候,或者本地有多个maven项目的时候。 \uxxxx 可能是\u0000。

看起来像是某次执行maven的时候,由于maven仓库找不到或者网络异常,由于某些版本的maven bug,把maven本地仓库里某些依赖的配置文件弄乱了。(参见:https://issues.apache.org/jira/browse/MRESOLVER-216)

解决办法是把有问题的artifact删除,重新执行maven命令就可以了。当然你可以直接把本地仓库目录(比如默认的~/.m2/repository/)都删掉,但是后面仍需要重新下载所有的maven依赖。最好是只把有问题的依赖删除。

如何找到有问题的artifact依赖呢?在IntelliJ IDEA里,打开Find In Files搜索框(Windows系统,快捷键ctrl+shift+f),输入\u0000 或者 \uxxxx, 选择在特定目录下搜索,选择本地maven仓库的文件夹。根据搜索结果,删除对应的artifact对应的文件夹就可以了。

如果习惯使用Windows命令行,也可以执行如下命令来查找有问题的依赖包。

findstr /S /M '\u0000' *.*