修复ServiceLoaderUtil.loadFirstAvailable在JDK24+后未捕获异常导致的报错问题(issue#ID0952@Gitee)

This commit is contained in:
Looly 2025-10-11 16:37:06 +08:00
parent cea2aaa271
commit 31fa4588b4
2 changed files with 5 additions and 4 deletions

View File

@ -2,7 +2,7 @@
# 🚀Changelog # 🚀Changelog
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------
# 5.8.41(2025-10-10) # 5.8.41(2025-10-11)
### 🐣新特性 ### 🐣新特性
* 【core 】 增加`WeakKeyValueConcurrentMap`及其关联类,同时废弃`WeakConcurrentMap`并替换issue#4039@Github * 【core 】 增加`WeakKeyValueConcurrentMap`及其关联类,同时废弃`WeakConcurrentMap`并替换issue#4039@Github
@ -38,6 +38,7 @@
* 【ai 】 修复`AIConfigBuilder`中方法名拼写错误pr#1382@Gitee * 【ai 】 修复`AIConfigBuilder`中方法名拼写错误pr#1382@Gitee
* 【core 】 修复`StrBuilder`charAt越界判断错误pr#4094@Github * 【core 】 修复`StrBuilder`charAt越界判断错误pr#4094@Github
* 【dfa 】 修复`WordTree.addWord`末尾为特殊字符导致的无法匹配问题pr#4092@Github * 【dfa 】 修复`WordTree.addWord`末尾为特殊字符导致的无法匹配问题pr#4092@Github
* 【core 】 修复`ServiceLoaderUtil.loadFirstAvailable`在JDK24+后未捕获异常导致的报错问题issue#ID0952@Gitee
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------
# 5.8.40(2025-08-26) # 5.8.40(2025-08-26)

View File

@ -4,7 +4,6 @@ import cn.hutool.core.collection.ListUtil;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.ServiceConfigurationError;
import java.util.ServiceLoader; import java.util.ServiceLoader;
/** /**
@ -34,8 +33,9 @@ public class ServiceLoaderUtil {
while (iterator.hasNext()) { while (iterator.hasNext()) {
try { try {
return iterator.next(); return iterator.next();
} catch (ServiceConfigurationError ignore) { } catch (Throwable ignore) {
// ignore // issue#ID0952 JDK 25+ 会直接抛出 NoClassDefFoundError https://bugs.openjdk.org/browse/JDK-8350481
// 这里安全忽略并尝试下一个实现
} }
} }
return null; return null;