问题描述:在进行测试的过程中发现,有一个导出xls文件的功能,文件正常到导出来了,但是页面上显示的是中文,但是导出来的xls文件取的确是数据库的存值,没有转换
前端一看代码说没问题,那没办法重启环境,清理浏览器缓存,还是不行,找其他的小伙伴导出一下也还是不行,排查很久没找到问题,最后到服务器上去看发现lib下的jar包存在多个版本
问题排查出来我也到服务器查看发现还真是,回想一下是针对比较老的环境进行升级的时候一次升级上去的,但是有一个清理jar脚本的文件没有没升级一次都执行一次,导致只执行到最后一次的删除脚本,找到问题了看一下有多少jar重复了
查找当前目录及其子目录中具有相同名称但版本不同的jar包:
find . -name "*.jar" | sed 's/.*\///' | sed 's/-[0-9].*//' | sort | uniq -d
这个命令的解释如下:
- find . -name "*.jar":在当前目录及其子目录中查找所有jar文件。
- sed 's/.*\///':使用sed命令删除文件路径,只保留文件名。
- sed 's/-[0-9].*//':使用sed命令删除文件名中的版本号(假设版本号以数字开头,后面跟着其他字符)。
- sort:对结果进行排序。
- uniq -d:只显示重复的行,即具有相同名称但版本不同的jar包。
这个命令将输出具有相同名称但版本不同的jar包的基本名称。如果你想查看完整的文件路径和名称,可以使用以下命令:
find . -name "*.jar" | sed 's/-[0-9].*//' | sort | uniq -d
以下脚本来删除具有相同名称但不同版本的jar包
#!/bin/bash
# 查找当前目录及其子目录中的所有jar文件
find . -name "*.jar" | sed 's/.*\///' | sed 's/-[0-9].*//' | sort | uniq -d > duplicate_jars.txt
# 逐行读取duplicate_jars.txt文件
while read -r line; do
# 查找具有相同名称但不同版本的jar包
find . -name "${line}*.jar" -not -name "${line}-${version}.jar" -exec rm -f {} \;
done< duplicate_jars.txt
# 删除duplicate_jars.txt文件
rm duplicate_jars.txt
将此脚本保存为delete_duplicate_jars.sh,并确保它具有可执行权限(使用chmod +x delete_duplicate_jars.sh)。
使用方法
- 将脚本保存到包含jar文件的目录中。
- 打开终端并导航到脚本所在的目录。
- 运行脚本:./delete_duplicate_jars.sh
脚本将查找并删除具有相同名称但不同版本的jar包。请注意,在运行此脚本之前,确保已备份项目,以防意外删除重要文件(最好是找到重复的文件一个个删除)
删除jar包重启环境再进行测试,xls下载的文件就显示和页面一致了