修复SettingLoaderload未抛出异常导致配置文件无法正常遍历的问题(pr#3868@Github)

This commit is contained in:
Looly 2025-02-24 10:24:59 +08:00
parent 4ef8814c14
commit 1c0b6c3da1
9 changed files with 29 additions and 22 deletions

View File

@ -2,13 +2,14 @@
# 🚀Changelog # 🚀Changelog
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------
# 5.8.37(2025-02-18) # 5.8.37(2025-02-24)
### 🐣新特性 ### 🐣新特性
* 【json 】 ObjectMapper删除重复trimpr#3859@Github * 【json 】 ObjectMapper删除重复trimpr#3859@Github
* 【core 】 `FileWriter`增加方法可选是否追加换行符issue#3858@Github * 【core 】 `FileWriter`增加方法可选是否追加换行符issue#3858@Github
### 🐞Bug修复 ### 🐞Bug修复
* 【setting】 修复`SettingLoader`load未抛出异常导致配置文件无法正常遍历的问题pr#3868@Github
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------
# 5.8.36(2025-02-18) # 5.8.36(2025-02-18)

View File

@ -1351,11 +1351,11 @@ public class FileUtil extends PathUtil {
if (null == classPath) { if (null == classPath) {
// throw new NullPointerException("ClassPath is null !"); // throw new NullPointerException("ClassPath is null !");
// 在jar运行模式中ClassPath有可能获取不到此时返回原始相对路径此时获取的文件为相对工作目录 // 在jar运行模式中ClassPath有可能获取不到此时返回原始相对路径此时获取的文件为相对工作目录
return path; return normalPath;
} }
// 资源不存在的情况下使用标准化路径有问题使用原始路径拼接后标准化路径 // 资源不存在的情况下使用标准化路径有问题使用原始路径拼接后标准化路径
return normalize(classPath.concat(Objects.requireNonNull(path))); return normalize(classPath.concat(Objects.requireNonNull(normalPath)));
} }
/** /**

View File

@ -0,0 +1,10 @@
package cn.hutool.db;
import org.junit.jupiter.api.Test;
public class GlobalDbConfigTest {
@Test
void createDbSettingTest(){
GlobalDbConfig.createDbSetting();
}
}

View File

@ -2,20 +2,13 @@ package cn.hutool.setting;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import cn.hutool.core.io.resource.NoResourceException;
import cn.hutool.core.io.resource.Resource; import cn.hutool.core.io.resource.Resource;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.CharUtil; import cn.hutool.core.util.*;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.SystemPropsUtil;
import cn.hutool.log.Log; import cn.hutool.log.Log;
import java.io.BufferedReader; import java.io.*;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
@ -73,19 +66,22 @@ public class SettingLoader {
* *
* @param resource 配置文件URL * @param resource 配置文件URL
* @return 加载是否成功 * @return 加载是否成功
* @throws NoResourceException 如果资源不存在抛出此异常
*/ */
public boolean load(Resource resource) { public boolean load(Resource resource) throws NoResourceException{
if (resource == null) { if (resource == null) {
throw new NullPointerException("Null setting url define!"); throw new NullPointerException("Null setting url define!");
} }
log.debug("Load setting file [{}]", resource);
InputStream settingStream = null; InputStream settingStream = null;
try { try {
settingStream = resource.getStream(); settingStream = resource.getStream();
load(settingStream); load(settingStream);
log.debug("Load setting file [{}]", resource);
} catch (Exception e) { } catch (Exception e) {
log.error(e, "Load setting error!"); if(e instanceof NoResourceException){
return false; throw (NoResourceException)e;
}
throw new NoResourceException(e);
} finally { } finally {
IoUtil.close(settingStream); IoUtil.close(settingStream);
} }