修复ClassUtil#scanJar未正确关闭文件问题

This commit is contained in:
Looly 2023-10-30 17:26:35 +08:00
parent b2b6a233dd
commit 0101ab5668
2 changed files with 16 additions and 10 deletions

View File

@ -2,7 +2,7 @@
# 🚀Changelog # 🚀Changelog
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------
# 5.8.23(2023-10-27) # 5.8.23(2023-10-30)
### 🐣新特性 ### 🐣新特性
* 【json 】 改进TemporalAccessorSerializer支持dayOfMonth和month枚举名issue#I82AM8@Gitee * 【json 】 改进TemporalAccessorSerializer支持dayOfMonth和month枚举名issue#I82AM8@Gitee
@ -22,7 +22,8 @@
* 【core 】 修复DataSize.parse(size)不支持空格问题issue#I88Z4Z@Gitee * 【core 】 修复DataSize.parse(size)不支持空格问题issue#I88Z4Z@Gitee
* 【http 】 修复SimpleServer在添加的HttpFilter中有获取请求参数时报错问题issue#3343@Github * 【http 】 修复SimpleServer在添加的HttpFilter中有获取请求参数时报错问题issue#3343@Github
* 【http 】 修复options请求无响应体问题 * 【http 】 修复options请求无响应体问题
* 【core 】 ImgUtil的sliceByRowsAndCols背景无法透明问题issue#3347@Gitee * 【core 】 ImgUtil的sliceByRowsAndCols背景无法透明问题issue#3347@Github
* 【core 】 修复ClassUtil#scanJar未正确关闭文件问题issue#3361@Github
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------
# 5.8.22(2023-09-13) # 5.8.22(2023-09-13)

View File

@ -5,6 +5,7 @@ import cn.hutool.core.collection.EnumerationIter;
import cn.hutool.core.exceptions.ExceptionUtil; import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.util.*; import cn.hutool.core.util.*;
@ -356,22 +357,26 @@ public class ClassScanner implements Serializable {
} }
/** /**
* 扫描jar包 * 扫描jar包扫描结束后关闭jar文件
* *
* @param jar jar包 * @param jar jar包
*/ */
private void scanJar(JarFile jar) { private void scanJar(JarFile jar) {
String name; try{
for (JarEntry entry : new EnumerationIter<>(jar.entries())) { String name;
name = StrUtil.removePrefix(entry.getName(), StrUtil.SLASH); for (JarEntry entry : new EnumerationIter<>(jar.entries())) {
if (StrUtil.isEmpty(packagePath) || name.startsWith(this.packagePath)) { name = StrUtil.removePrefix(entry.getName(), StrUtil.SLASH);
if (name.endsWith(FileUtil.CLASS_EXT) && false == entry.isDirectory()) { if (StrUtil.isEmpty(packagePath) || name.startsWith(this.packagePath)) {
final String className = name// if (name.endsWith(FileUtil.CLASS_EXT) && false == entry.isDirectory()) {
final String className = name//
.substring(0, name.length() - 6)// .substring(0, name.length() - 6)//
.replace(CharUtil.SLASH, CharUtil.DOT);// .replace(CharUtil.SLASH, CharUtil.DOT);//
addIfAccept(loadClass(className)); addIfAccept(loadClass(className));
}
} }
} }
} finally {
IoUtil.close(jar);
} }
} }