今天用idea运行完项目。想直接打包的时候,结果打包失败,一直报错 [ERROR] Malformed \uxxxx encoding.

网上查了之后,一直说是,有路径在使用斜杠的时候,使用错误。将"\"换成"/"就好了,但是我配置文件、pom文件中,所有涉及到路径的都没有"\"。

还有的说,让换个maven仓库,重新下载jar包,但是我的项目所有jar加起来非常多,还有一些jar需要手动导入。换一个maven重新下载,肯定不太现实。

直到后来看到一篇文章,macos - java.lang.IllegalArgumentException: Malformed \uxxxx encoding while mvn install - Stack Overflow

文章中,给出的解决办法是,在./m2/文件夹下,找到path-to-the-library,然后删掉。

但是....

我的仍然没有这个文件夹。

后来使用everthing 全局搜了resolver-status.properties 文件结果发现好几个。而且看产生时间,都是在我打包失败过程中产生的。

打开文件,发现记录的是每次打包的报错信息,还有一部分乱码。

于是我把在我打包失败过程中,产生的所有resolver-status.properties 全部删除,

然后用idea重新mvn install ,项目打包成功。

所以统一以下网上的解决方案

1、先检查项目的.properties、.yml 、pom.xml、logback等配置中,是否有路径错误使用

2、更新maven仓库,重新下载jar包

3、删除path-to-the-library或者resolver-status.properties 文件

无论哪一种都建议重启一下编辑器,idea的话,直接点击Invalidate Caches/ Restart 按钮,清理缓存,重启idea

像第二种,更新maven仓库,感觉大可不必。没必要所有的jar 都重新下载,可以将一些没下载成功的jar包重新下载即可。

怎么判断依赖下载没成功呢

一般下载不成功的依赖,都会生成一个后缀未.lastupdated的文件,而且有这个文件一旦生成,那个依赖就会一直下载不成功,无论怎么reload maven 仓库,都下载不成功。

貌似是maven检查本地库的时候,检查到这个后缀的文件时,好像就不会重新下载当前这个依赖(具体原因还有待确认)

更换maven仓库地址,其实就是换一个新的空文件夹。这样依赖就会重新下载。更换依赖版本,其实也是换了一个新的空文件夹。因为,每个版本的依赖,都会放在一个单独的文件夹下 

这样,直接删除那些带.lastUpdated后缀的文件,就不需要再更新maven仓库或者更换jar包版本了。而且已经下载成功的jar也不需要重新下载。

当然,我们也不知道,具体哪些依赖没有下载成功,只生成.lastUpdated文件。那么,我们可以写一个bat脚本,遍历maven仓库下所有的依赖,检查文件后缀是否为.lastUpdated,有就删除。

删除完成之后,重新用idea reload一下maven仓库,就可以重新下载依赖。

脚本内容如下:

@echo off
::REPOSITORY_PATH更换成自己的maven地址
set REPOSITORY_PATH=D:\data\maven\maven-3.8.1-repository
echo %REPOSITORY_PATH%
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
    del /s /q %%i
)
pause

操作方法:

1、在桌面新建一个txt文件,将上面内容拷进去,替换自己的maven仓库地址。

2、将txt文件的后缀改成.bat,保存文件

3、双击运行这个bat脚本就行了。

这样就会将你maven仓库下的.lastUpdated的文件都删除掉,然后就能重新下载jar包了

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐