java.lang.IllegalArgumentException: Malformed \uxxxx encoding — 记一次maven报错的调试过程

这篇具有很好参考价值的文章主要介绍了java.lang.IllegalArgumentException: Malformed \uxxxx encoding — 记一次maven报错的调试过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文唯一发布网站 博客园(官网地址:https://www.cnblogs.com/)

本文地址:https://www.cnblogs.com/zeromi/p/17716933.html

前情提要

有天需要写个东西,需要翻一下老代码,使用idea打开一个很久没打开的项目,然后不知道为啥到处飘红
在查看了项目的External Labraries列表,发现包都有,再看下项目jdk设置,没错啊,还是万年的jdk8,mvn设置3.6.3

java.lang.IllegalArgumentException: Malformed \uxxxx encoding — 记一次maven报错的调试过程

 

我尝试了以下办法

1. maven 刷新(重新导入) 无效
2. idea重新导入项目 无效

只能老办法,上百度了,直接复制报错关键信息,"Malformed \uxxxx encoding",在百度的搜索结果里屎里淘金

csdn的搜索结果最靠前,但是大多数只是简单的说了下自己做了啥操作解决了,答案也基本千篇一律,偶尔有个特别的也没说清楚(csdn大部分时候浪费时间简直是)

cnblogs(博客园)只搜到一篇相关,但也没能解决问题

总结下来就是:
删除本地maven仓库里面的 resolver-status.properties和xxxxx.lastupdate文件,这两操作都没能解决问题
后面搜到了stackflow上的这个问题贴,感觉之前看的那些贴都是看了这个帖写的(合理怀疑)

stackflow上的问题贴

(主要我在网上搜到的大多数相关的解决方法基本都在这个帖子中)
https://stackoverflow.com/questions/68003423/java-lang-illegalargumentexception-malformed-uxxxx-encoding-while-mvn-install

apache相关问题帖(stackflow上面说是maven的一个bug)
https://issues.apache.org/jira/browse/MRESOLVER-216


帖子提供的办法:
1. 删除本地maven仓库里面的 resolver-status.properties和xxxxx.lastupdate文件

find ~/.m2/ -name resolver-status.properties -delete

2. maven的配置文件里面路径包含‘\’直接删除本地仓库中所有存在该字符的文件,或者直接删除本地库中的全部文件(未尝试,不想删除整个本地库重新下载,太浪费时间了)

grep -lrnw /else/where -e '\u0000' | xargs rm

3. 自己debug

根据stackflow的问题帖上评论里的maven debug方法最终找到问题

我的问题排查过程

1. 首先需要确定问题原因:

在idea里面使用mvn compile -X,-X表示打印debug日志,重现一下错误,根据打印日志,确定是读取某个文件出现错误

2. 找到这个文件:

根据maven编译的打印日志从子模块bus开始报错,然后中断编译了,所以重点排查bus子模块

3. 准备maven debug

3.1 下载maven源代码

  maven官网源代码下载地址(https://archive.apache.org/dist/maven/maven-3/3.6.3/source/)

  首先去maven官网下载相同版本的maven源代码(比如我的项目用的maven-3.6.3),将解压后的maven源代码作为新项目导入idea,这里就叫它mvnDebug项目

3.2 创建调试端启动配置

  打开mvnDebug项目,新建一个RemoteDebug启动配置(java远程调试,我用的idea2023.2社区版,使用的New UI)

java.lang.IllegalArgumentException: Malformed \uxxxx encoding — 记一次maven报错的调试过程

 

java.lang.IllegalArgumentException: Malformed \uxxxx encoding — 记一次maven报错的调试过程

 

4. 打开报错的项目,在控制台使用命令进行maven编译

使用maven编译报错的项目,这里我称为项目A

使用命令行进行maven 调试模式编译

4.1底部打开命令行(也可以自己打开项目代码根据目录,直接鼠标右键打开cmd或者powershell,需要使用本地maven,如果你的项目使用idea自带的maven会找不到maven程序,因为没有配环境变量)

java.lang.IllegalArgumentException: Malformed \uxxxx encoding — 记一次maven报错的调试过程

 

4.2然后直接执行命令

mvnDebug -s D:\ProgramFiles\maven\conf\settings_aliyun.xml compile -X

说明:mvnDebug是mvn的调试启动命令,看启动脚本可以发现其实就是开启了一个远程调试端口
-s 是指定maven的配置文件
-X 是打印debug日志

5.启动maven Debug

打开mvnDebug项目,使用第3步新建的debug配置启动,这时候会发现debug跑了一下很快结束了,因为你没有打断点;

但是入口都没找到在哪,怎么打断点呢,直接看maven编译时的错误日志,根据错误堆栈信息,往上追溯maven源代码的包名;

在maven源代码项目中直接找到这个包中报错的那个类并在相应方法下下断点就可以让maven调试时进入断点;

重复第4,5步操作,最终定位到出错文件:
(E:\MavenRepository\org\springframework\boot\spring-boot-starter-amqp\2.2.13.RELEASE\_remote.repositories)
使用记事本(我用的notepad--)打开发现文件末尾出现了大量的不可见字符,删除这些多余的字符,根据其他目录中的文件样式,保留末尾一个空行。文章来源地址https://www.toymoban.com/news/detail-712178.html

6. 重试maven编译,完美解决问题

到了这里,关于java.lang.IllegalArgumentException: Malformed \uxxxx encoding — 记一次maven报错的调试过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • org.elasticsearch.bootstrap.StartupException:java.lang.IllegalArgumentException:

    org.elasticsearch.bootstrap.StartupException:java.lang.IllegalArgumentException:

    ES进入bin文件夹启动elasticsearch.bat文件后出现 org.elasticsearch.bootstrap.StartupException:java.lang.IllegalArgumentException: Plugin [analysis-ik] was built for Elasticsearch version Caused by: java.lang.IllegalArgumentException: Plugin [analysis-ik] was built for Elasticsearch version 7.17.4 but version 7.16.2 is running java.lang.IllegalArgum

    2024年02月11日
    浏览(48)
  • java.lang.IllegalArgumentException: bound must be positive

    IllegalArgumentException 是Java中的一个异常类,用于在方法中传递非法的参数值时抛出。具体的错误信息 bound must be positive 表示传入的参数边界必须是一个正数。 在Java中,一些方法或构造函数要求参数值是正数。如果传入了负数或零,就会抛出这个异常。要解决此问题,您需要检

    2024年02月04日
    浏览(43)
  • Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.Str

    Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.Str

    这个异常意味着你尝试在Java程序中比较一个java.util.Date对象和一个java.lang.String对象,这是无效的比较。Java中的不同类型的对象只能在特定的比较操作中使用。通常,日期对象被用于表示日期和时间信息,而字符串对象用于表示文本信息。因此,Java不允许直接将它们进行比较

    2024年02月16日
    浏览(46)
  • 解决错误 “java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String“ 的

    解决错误 “java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String“ 的

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在 Java 开发中,有时会遇到错误信息 “java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String”,

    2024年02月10日
    浏览(44)
  • Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [java.lang

    Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [java.lang

    问题:使用spring-mvc进行获取前端参数时报错 具体报错如下: 我使用的是最新版的6.1.4版本的spring-webmvc,传参方式如下 按道理按照之前的写法,就算是没有加@RequestParam注解,这样子也不会报错,很奇怪。 后面发现这是新版本的问题,可能是新版的webmvc改了吧,简单类型应该

    2024年04月15日
    浏览(49)
  • 已解决java.lang.IllegalArgumentException异常的正确解决方法,亲测有效!!!

    已解决java.lang.IllegalArgumentException异常的正确解决方法,亲测有效!!! java.lang.IllegalArgumentException java.lang.IllegalArgumentException是Java中的一个异常,表示传递给方法的参数不合法。 下滑查看解决方法 这个异常通常在方法内部检查参数的有效性时抛出。要解决这个问题,你可以

    2024年02月04日
    浏览(48)
  • java.lang.IllegalArgumentException: Source must not be null

    这个错的意思是:报这个错是因为在cope的时候参数为空 这种情况下已经都做了非空判断但是还依然会报错,是因为自己虽然查出来的数据为null,但是只要重新new一下就可以

    2024年02月13日
    浏览(83)
  • java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified问题

    java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified问题

    问题如图: 1.问题描述 IllegalArgumentException 顾名思义,非法参数异常(差点看出来了,但凡我英文好点......) Name for argument of type [java.lang.String] not specified, and parameter name information not found in class file either. 未指定 [java.lang.String] 类型的参数的名称,并且在类文件中也找不到参数名称

    2024年03月13日
    浏览(44)
  • Java报错:java.lang.IllegalArgumentException: Source must not be null

    Java报错:java.lang.IllegalArgumentException: Source must not be null

    运行项目的时候,突然暴了这么一个错,通过debug进行调试以后发现是:  前端传递过来的id不对,后两位自动归0了,通过已经归0的id,显然不可以查询到后端的数据。 经过检查,发现是在使用mybatis-plus的时候,id是使用雪花算法自动生成19位数字,传给前端会通过json序列化

    2024年01月20日
    浏览(46)
  • php报错:Malformed UTF-8 characters, possibly incorrectly encoded

    \\\"Malformed UTF-8 characters, possibly incorrectly encoded\\\" 这个错误通常会在处理含有非UTF-8字符的数据时出现,尤其是在使用 json_encode() 函数时。 这可能是由于你的数据包含了非UTF-8字符,而 json_encode() 函数需要转换为UTF-8编码的数据。以下是一些解决此问题的方式: 确保所有输入的数据

    2024年02月09日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包