调试解决 java.lang.IllegalArgumentException: Malformed \uxxxx encoding 编译错误

调试解决 java.lang.IllegalArgumentException: Malformed \uxxxx encoding 编译错误

今天编译项目时遇到了这样一个错误:Malformed \uxxxx encoding java.lang.IllegalArgumentException: Malformed \uxxxx encoding.

今天编译项目时遇到了这样一个错误:Malformed \uxxxx encoding

java.lang.IllegalArgumentException: Malformed \uxxxx encoding.

显然,有个文件损坏了,但是可惜的是 Maven 没有告诉我们到底是哪个文件损坏了。

可以直接扬了 .m2 本地仓库,但是成本太高。依赖很多的情况下,就国内的网络情况不拉个一晚上怕是拉不下来需要的依赖。

着手解决

首先切换到 Terminal 终端,cd 到故障 Maven 项目/模块 目录下面,使用 mvn package -X 重新触发一次编译。

mvn package -X

这次可以看到,我们获得了更详细的错误,但是还是没有故障文件的路径。

因此,我们需要借助 IDE 的调试功能调试一下。首先分析下堆栈,对着蓝色的链接挨个点一遍,看看从哪里读取了一个 Properties 文件:

分析调用栈

如图所示,在 DefaultUpdateCheckManager.java:250 的位置读入了一个 touchFile,在对应那一行的前面点一下创建一个断点(出现红点)。

调试运行

为了使断点生效,则必须将 JVM 挂接到 IDE 上。最简单的方式是使用 IDE 的 “调试(DEBUG)”功能。

点击左上角的运行框,展开下拉菜单,选择 Edit Configurations...来编辑调试配置文件。

Editi Configurations...

点击左上角的 + 号按钮,添加新配置,选择 Maven。

创建新的 Maven 配置文件

在 Run(运行命令)的编辑框中输入我们刚刚使用的 package -X 命令。

在 Working Directory(工作目录)中选择出现故障的 Maven 项目/模块。

设置运行/调试配置文件

点击 OK,保存并关闭窗口。

点击 OK

启动调试

保存后,我们就可以在运行下拉框中找到刚刚创建的配置文件,选择 Debug(调试)方式运行。

选择以 Debug 模式调试运行。

Maven 运行后,很快到达我们设置的断点,检查我们想要知道的 touchFile 的值。

检查 touchFile 变量的值

在资源管理器中找到这个文件,打开,检查是否损坏:

找到 touchFile 中对应的文件
检查是否损坏

发现该文件存在大量的 \u0000 确定该文件损坏,删除,重新让 Maven 解决依赖,问题解决。

问题解决

如果你打开的文件似乎没有损坏,可以继续运行调试,检查其他文件。

更简单的方法

直接把 .m2 目录下的所有子文件夹的所有 resolver-status.properties 一起删了,众生平等一起重新解决一遍依赖也是可以的。

.m2 目录在哪里

按下 Win+R 键,打开 “运行”,输入 %USERPROFILE%\.m2,敲回车就可以了。

打开 .m2 文件夹
除特殊说明以外,本站原创内容采用 知识共享 署名-非商业性使用 4.0 (CC BY-NC 4.0) 许可。转载时请注明来源,以及原文链接。
Comment