diff --git a/storage/pom.xml b/storage/pom.xml index 79a241f7..7245ff09 100644 --- a/storage/pom.xml +++ b/storage/pom.xml @@ -122,6 +122,11 @@ guava 32.1.2-jre + + org.springframework + spring-messaging + 5.3.20 + diff --git a/storage/src/main/java/com/zfoo/storage/util/LambdaUtils.java b/storage/src/main/java/com/zfoo/storage/util/LambdaUtils.java index 2b224f03..92db7271 100644 --- a/storage/src/main/java/com/zfoo/storage/util/LambdaUtils.java +++ b/storage/src/main/java/com/zfoo/storage/util/LambdaUtils.java @@ -34,9 +34,10 @@ public final class LambdaUtils { } // 2. 反射读取 try { - Method method = func.getClass().getDeclaredMethod("writeReplace"); + Class clazz = func.getClass(); + Method method = clazz.getDeclaredMethod("writeReplace"); ReflectionUtils.makeAccessible(method); - return new ReflectLambdaMeta((SerializedLambda) method.invoke(func), func.getClass().getClassLoader()); + return new ReflectLambdaMeta((java.lang.invoke.SerializedLambda) method.invoke(func), clazz.getClassLoader()); } catch (Throwable e) { // 3. 反射失败使用序列化的方式读取 return new ShadowLambdaMeta(SerializedLambda.extract(func)); diff --git a/storage/src/main/java/com/zfoo/storage/util/support/ReflectLambdaMeta.java b/storage/src/main/java/com/zfoo/storage/util/support/ReflectLambdaMeta.java index 3ae8e60c..9caf52a9 100644 --- a/storage/src/main/java/com/zfoo/storage/util/support/ReflectLambdaMeta.java +++ b/storage/src/main/java/com/zfoo/storage/util/support/ReflectLambdaMeta.java @@ -7,11 +7,11 @@ import com.zfoo.protocol.util.StringUtils; * Created by hcl at 2021/5/14 */ public class ReflectLambdaMeta implements LambdaMeta { - private final SerializedLambda lambda; + private final java.lang.invoke.SerializedLambda lambda; private final ClassLoader classLoader; - public ReflectLambdaMeta(SerializedLambda lambda, ClassLoader classLoader) { + public ReflectLambdaMeta(java.lang.invoke.SerializedLambda lambda, ClassLoader classLoader) { this.lambda = lambda; this.classLoader = classLoader; } diff --git a/storage/src/main/resources/META-INF/native-image/serialization-config.json b/storage/src/main/resources/META-INF/native-image/serialization-config.json new file mode 100644 index 00000000..7912e89b --- /dev/null +++ b/storage/src/main/resources/META-INF/native-image/serialization-config.json @@ -0,0 +1,24 @@ +{ + "types": [ + { + "name": "com.zfoo.storage.util.support.SerializedLambda" + }, + { + "name": "java.lang.invoke.SerializedLambda" + }, + { + "name": "com.zfoo.storage.util.function.Func" + }, + { + "name": "com.zfoo.storage.util.function.Func0" + }, + { + "name": "com.zfoo.storage.util.function.Func1" + } + ], + "lambdaCapturingTypes": [ + { + "name": "com.zfoo.storage.util.LambdaUtils" + } + ] +}