diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/bean/PropDesc.java b/hutool-core/src/main/java/org/dromara/hutool/core/bean/PropDesc.java index 18ac56efa..02374287c 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/bean/PropDesc.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/bean/PropDesc.java @@ -166,8 +166,12 @@ public class PropDesc { */ public Object getValue(final Object bean) { if (null != this.getter) { - //return MethodUtil.invoke(bean, this.getter); - return LambdaUtil.buildGetter(this.getter).apply(bean); + try{ + return LambdaUtil.buildGetter(this.getter).apply(bean); + } catch (final Exception ignore){ + // issue#I96JIP,在jdk14+多模块项目中,存在权限问题,使用传统反射 + return MethodUtil.invoke(bean, this.getter); + } } else if (ModifierUtil.isPublic(this.field)) { return FieldUtil.getFieldValue(bean, this.field); } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaFactory.java b/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaFactory.java index f424e9d99..58b25d37c 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaFactory.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaFactory.java @@ -28,9 +28,8 @@ import java.util.Map; /** * 以类似反射的方式动态创建Lambda,在性能上有一定优势,同时避免每次调用Lambda时创建匿名内部类 - * TODO JDK9+存在兼容问题,当参数为原始类型时报错 * - * @author nasodaengineer + * @author nasodaengineer */ public class LambdaFactory { @@ -108,6 +107,10 @@ public class LambdaFactory { /** * 通过Lambda函数代理方法或构造 + *

+ * TODO 在多模块项目中,使用module-info.java声明的模块项目,使用此方法获取的Lookup对象存在权限不足问题
+ * 见:https://gitee.com/dromara/hutool/issues/I96JIP + *

* * @param funcType 函数类型 * @param funcMethod 函数执行的方法