-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Description
报错信息如下:
java.lang.reflect.InaccessibleObjectException: Unable to make field private final byte[] java.lang.String.value accessible: module java.base does not "opens java.lang" to unnamed module @1b11171f at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) at java.base/java.lang.reflect.Field.setAccessible(Field.java:172) at org.nustaq.serialization.FSTClazzInfo.createFieldInfo(FSTClazzInfo.java:512) at org.nustaq.serialization.FSTClazzInfo.createFields(FSTClazzInfo.java:368) at org.nustaq.serialization.FSTClazzInfo.<init>(FSTClazzInfo.java:129) at org.nustaq.serialization.FSTClazzInfoRegistry.getCLInfo(FSTClazzInfoRegistry.java:129) at org.nustaq.serialization.FSTClazzNameRegistry.addClassMapping(FSTClazzNameRegistry.java:98) at org.nustaq.serialization.FSTClazzNameRegistry.registerClassNoLookup(FSTClazzNameRegistry.java:85) at org.nustaq.serialization.FSTClazzNameRegistry.registerClass(FSTClazzNameRegistry.java:81) at org.nustaq.serialization.FSTConfiguration.addDefaultClazzes(FSTConfiguration.java:807) at org.nustaq.serialization.FSTConfiguration.initDefaultFstConfigurationInternal(FSTConfiguration.java:477) at org.nustaq.serialization.FSTConfiguration.createDefaultConfiguration(FSTConfiguration.java:472) at org.nustaq.serialization.FSTConfiguration.createDefaultConfiguration(FSTConfiguration.java:464) at org.jetlinks.community.codec.Serializers$2$1.initialValue(Serializers.java:52) at org.jetlinks.community.codec.Serializers$2$1.initialValue(Serializers.java:49) at io.netty.util.concurrent.FastThreadLocal.initialize(FastThreadLocal.java:178) at io.netty.util.concurrent.FastThreadLocal.get(FastThreadLocal.java:143) at org.jetlinks.community.codec.Serializers$2.createOutput(Serializers.java:68) at org.jetlinks.community.configure.redis.ObjectRedisSerializer.serialize(ObjectRedisSerializer.java:55) at org.springframework.data.redis.serializer.DefaultRedisElementWriter.write(DefaultRedisElementWriter.java:42) at org.springframework.data.redis.serializer.RedisSerializationContext$SerializationPair.write(RedisSerializationContext.java:292) at org.springframework.data.redis.core.DefaultReactiveHashOperations.rawHashValue(DefaultReactiveHashOperations.java:269) at org.springframework.data.redis.core.DefaultReactiveHashOperations.lambda$put$20(DefaultReactiveHashOperations.java:197) at org.springframework.data.redis.core.DefaultReactiveHashOperations.lambda$createMono$27(DefaultReactiveHashOperations.java:250) at org.springframework.data.redis.core.ReactiveRedisTemplate.lambda$doInConnection$1(ReactiveRedisTemplate.java:250) ...11 frames excluded
初步来看,是由于Java 17模块系统限制了对java.lang.String内部字段的访问。FST库试图通过反射访问私有字段,但被模块系统阻止。目前有什么解决方案呢?