maven compile error java.lang.IllegalArgumentException: Malformed \uxxxx encoding

作者在处理新项目时遇到Maven编译错误,涉及malformedencoding。问题源于jar包依赖的maven-metadata.xml未正确下载。通过删除无效文件并调整仓库配置,解决了问题。提供了解决此类问题的命令行方法,包括搜索和清理含有null字符的文件。
摘要由CSDN通过智能技术生成

今天接手一个新项目,在使用 maven 构建过程中出现了错误,记录一下

mvn compile 失败提示如下:

[INFO] Building promise-api 4.2.2-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.203 s
[INFO] Finished at: 2024-02-27T17:04:33+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Malformed \uxxxx encoding.
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.

遂跟着错误提示增加 -X 来debug:
mvn compile -X
这次提示:

[DEBUG] Could not find metadata com.axiba.bone:bone-common-api:1.0-SNAPSHOT/maven-metadata.xml in local (/Users/ss/develop/maven-repository)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.215 s
[INFO] Finished at: 2024-02-27T17:00:49+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Malformed \uxxxx encoding.
java.lang.IllegalArgumentException: Malformed \uxxxx encoding.
    at java.util.Properties.loadConvert (Properties.java:574)
    at java.util.Properties.load0 (Properties.java:390)
    at java.util.Properties.load (Properties.java:341)
    at org.eclipse.aether.internal.impl.TrackingFileManager.read (TrackingFileManager.java:56)
...

很好,关键信息:

Could not find metadata com.axiba.bone:bone-common-api:1.0-SNAPSHOT/maven-metadata.xml in local (/Users/ss/develop/maven-repository)

删掉jar包所在文件夹, 重新从仓库下载 搞定!

什么原因呢?是因为这个 jar 下载不完整导致, 有没有更简单的解决办法, 毕竟当有多个jar存在这样的问题时 debug 日志会很多很多,手动删除会疯掉

使用英文搜索了一下,发现stackoverflow 上早有人回答类似的问题,跟着题解操作很简单:

  • 使用下面的命令可以找到存在此类问题的文件:

注意:~/.m2 是maven的仓库位置,这个目录的配置是在 ~/.m2/settings.xml 文件中的 localRepository 标签中
执行命令时,需要将其替换为自己配置的仓库地址

grep -rnw ~/.m2 -e '\u0000'
  • 当然找到之后要删除的,可以使用下面的命令处理:
grep -lrnw ~/.m2 -e '\u0000' | xargs rm
  • 如果 maven 仓库中有大量文件,可以使用查找命令加快删除速度:
find  ~/.m2 -name "resolver-status.properties" -exec grep -H -e '\u0000' {} \; | sed -r 's/:.*$//g' | xargs rm

参考

stackoverflow

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值