From 31fa4588b481ce7050cb2102cdc721c886aad60f Mon Sep 17 00:00:00 2001 From: Looly Date: Sat, 11 Oct 2025 16:37:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D`ServiceLoaderUtil.loadFirstA?= =?UTF-8?q?vailable`=E5=9C=A8JDK24+=E5=90=8E=E6=9C=AA=E6=8D=95=E8=8E=B7?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=AF=BC=E8=87=B4=E7=9A=84=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=88issue#ID0952@Gitee=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 ++- .../main/java/cn/hutool/core/util/ServiceLoaderUtil.java | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ddfd3617..7426fb658 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.41(2025-10-10) +# 5.8.41(2025-10-11) ### 🐣新特性 * 【core 】 增加`WeakKeyValueConcurrentMap`及其关联类,同时废弃`WeakConcurrentMap`并替换(issue#4039@Github) @@ -38,6 +38,7 @@ * 【ai 】 修复`AIConfigBuilder`中方法名拼写错误(pr#1382@Gitee) * 【core 】 修复`StrBuilder`charAt越界判断错误(pr#4094@Github) * 【dfa 】 修复`WordTree.addWord`末尾为特殊字符导致的无法匹配问题(pr#4092@Github) +* 【core 】 修复`ServiceLoaderUtil.loadFirstAvailable`在JDK24+后未捕获异常导致的报错问题(issue#ID0952@Gitee) ------------------------------------------------------------------------------------------------------------- # 5.8.40(2025-08-26) diff --git a/hutool-core/src/main/java/cn/hutool/core/util/ServiceLoaderUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/ServiceLoaderUtil.java index d04807d5f..fdaa552b1 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/ServiceLoaderUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/ServiceLoaderUtil.java @@ -4,7 +4,6 @@ import cn.hutool.core.collection.ListUtil; import java.util.Iterator; import java.util.List; -import java.util.ServiceConfigurationError; import java.util.ServiceLoader; /** @@ -34,8 +33,9 @@ public class ServiceLoaderUtil { while (iterator.hasNext()) { try { return iterator.next(); - } catch (ServiceConfigurationError ignore) { - // ignore + } catch (Throwable ignore) { + // issue#ID0952 JDK 25+ 会直接抛出 NoClassDefFoundError https://bugs.openjdk.org/browse/JDK-8350481 + // 这里安全忽略,并尝试下一个实现 } } return null;