今天用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-repositoryecho %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包了