apache/fory

[Java] support copy non-serializable objects such as java.lang.Package

Open

#2,941 创建于 2025年11月27日

在 GitHub 查看
 (17 评论) (0 反应) (0 负责人)Java (426 fork)auto 404
buggood first issue

仓库指标

Star
 (4,419 star)
PR 合并指标
 (PR 指标待抓取)

描述

Search before asking

  • I had searched in the issues and found no similar issues.

Version

I'm facing an issue copying Hibernate objects using fory.copy(object) whereas fory.deserialize(fory.serialize(object)) works fine for the same object.

java.lang.RuntimeException: Create sequential serializer failed, class: class org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader java.lang.UnsupportedOperationException: Class class java.lang.Package doesn't support serialization. at org.apache.fory.resolver.ClassResolver.getSerializerClass(ClassResolver.java:920) at org.apache.fory.resolver.ClassResolver.getSerializerClass(ClassResolver.java:854) at org.apache.fory.builder.BaseObjectCodecBuilder.lambda$getOrCreateSerializer$8(BaseObjectCodecBuilder.java:607) at org.apache.fory.builder.BaseObjectCodecBuilder.lambda$typeResolver$2(BaseObjectCodecBuilder.java:247) at org.apache.fory.builder.JITContext.asyncVisitFory(JITContext.java:159) at org.apache.fory.builder.BaseObjectCodecBuilder.typeResolver(BaseObjectCodecBuilder.java:247) at org.apache.fory.builder.BaseObjectCodecBuilder.typeResolver(BaseObjectCodecBuilder.java:243) at org.apache.fory.builder.BaseObjectCodecBuilder.getOrCreateSerializer(BaseObjectCodecBuilder.java:607) at org.apache.fory.builder.BaseObjectCodecBuilder.readOrGetSerializerForDeclaredType(BaseObjectCodecBuilder.java:2164) at org.apache.fory.builder.BaseObjectCodecBuilder.readChunk(BaseObjectCodecBuilder.java:2056) at org.apache.fory.builder.BaseObjectCodecBuilder.lambda$deserializeForMap$47e820f7$1(BaseObjectCodecBuilder.java:1995) at org.apache.fory.codegen.Expression$While.<init>(Expression.java:2209) at org.apache.fory.builder.BaseObjectCodecBuilder.deserializeForMap(BaseObjectCodecBuilder.java:1967) at org.apache.fory.builder.BaseObjectCodecBuilder.deserializeForNotNull(BaseObjectCodecBuilder.java:1662) at org.apache.fory.builder.BaseObjectCodecBuilder.deserializeForNotNull(BaseObjectCodecBuilder.java:1621) at org.apache.fory.builder.BaseObjectCodecBuilder.lambda$deserializeForNullable$26(BaseObjectCodecBuilder.java:1552) at org.apache.fory.builder.BaseObjectCodecBuilder.readRef(BaseObjectCodecBuilder.java:1572) at org.apache.fory.builder.BaseObjectCodecBuilder.deserializeForNullable(BaseObjectCodecBuilder.java:1552) at org.apache.fory.builder.ObjectCodecBuilder.lambda$deserializeGroup$135afeca$1(ObjectCodecBuilder.java:560) at org.apache.fory.codegen.ExpressionOptimizer.invokeGenerated(ExpressionOptimizer.java:49) at org.apache.fory.builder.ObjectCodecOptimizer.invokeGenerated(ObjectCodecOptimizer.java:138) at org.apache.fory.builder.ObjectCodecBuilder.deserializeGroup(ObjectCodecBuilder.java:577) at org.apache.fory.builder.ObjectCodecBuilder.buildDecodeExpression(ObjectCodecBuilder.java:465) at org.apache.fory.builder.BaseObjectCodecBuilder.genCode(BaseObjectCodecBuilder.java:264) at org.apache.fory.codegen.CompileUnit.getCode(CompileUnit.java:53) at org.apache.fory.codegen.JaninoUtils.toBytecode(JaninoUtils.java:81) at org.apache.fory.codegen.JaninoUtils.toBytecode(JaninoUtils.java:73) at org.apache.fory.codegen.CodeGenerator.compile(CodeGenerator.java:145) at org.apache.fory.builder.CodecUtils.loadOrGenCodecClass(CodecUtils.java:113) at org.apache.fory.builder.CodecUtils.lambda$loadOrGenObjectCodecClass$0(CodecUtils.java:53) at org.apache.fory.builder.CodecUtils.loadSerializer(CodecUtils.java:164) ... 172 common frames omitted Wrapped by: java.lang.RuntimeException: java.lang.UnsupportedOperationException: Class class java.lang.Package doesn't support serialization. at org.apache.fory.builder.CodecUtils.loadSerializer(CodecUtils.java:170) at org.apache.fory.builder.CodecUtils.loadOrGenObjectCodecClass(CodecUtils.java:50) at org.apache.fory.serializer.CodegenSerializer.loadCodegenSerializer(CodegenSerializer.java:49) ... 170 common frames omitted Wrapped by: java.lang.RuntimeException: Create sequential serializer failed, class: class org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader at org.apache.fory.serializer.CodegenSerializer.loadCodegenSerializer(CodegenSerializer.java:52) at org.apache.fory.resolver.ClassResolver.lambda$getObjectSerializerClass$3(ClassResolver.java:1024) at org.apache.fory.builder.JITContext.registerSerializerJITCallback(JITContext.java:121) at org.apache.fory.resolver.ClassResolver.getObjectSerializerClass(ClassResolver.java:1022) at org.apache.fory.resolver.ClassResolver.getSerializerClass(ClassResolver.java:976) at org.apache.fory.resolver.ClassResolver.getSerializerClass(ClassResolver.java:854) at org.apache.fory.resolver.ClassResolver.createSerializer(ClassResolver.java:1260) at org.apache.fory.resolver.ClassResolver.getOrUpdateClassInfo(ClassResolver.java:1182) at org.apache.fory.Fory.copyObject(Fory.java:1393) at org.apache.fory.serializer.AbstractObjectSerializer.copyFields(AbstractObjectSerializer.java:788) at org.apache.fory.serializer.AbstractObjectSerializer.copy(AbstractObjectSerializer.java:702) at org.apache.fory.Fory.copyObject(Fory.java:1488) at org.apache.fory.Fory.copyObject(Fory.java:1448) at org.apache.fory.serializer.AbstractObjectSerializer.copyFields(AbstractObjectSerializer.java:788) at org.apache.fory.serializer.AbstractObjectSerializer.copy(AbstractObjectSerializer.java:702) at org.apache.fory.Fory.copyObject(Fory.java:1488) at org.apache.fory.Fory.copyObject(Fory.java:1448) at org.apache.fory.serializer.AbstractObjectSerializer.copyFields(AbstractObjectSerializer.java:788) at org.apache.fory.serializer.AbstractObjectSerializer.copy(AbstractObjectSerializer.java:702) at org.apache.fory.Fory.copyObject(Fory.java:1488) at org.apache.fory.Fory.copyObject(Fory.java:1448) at org.apache.fory.serializer.AbstractObjectSerializer.copyFields(AbstractObjectSerializer.java:788) at org.apache.fory.serializer.AbstractObjectSerializer.copy(AbstractObjectSerializer.java:702) at org.apache.fory.Fory.copyObject(Fory.java:1488) at org.apache.fory.serializer.collection.CollectionSerializers$DefaultJavaCollectionSerializer.copy(CollectionSerializers.java:734) at org.apache.fory.Fory.copyObject(Fory.java:1488) at org.apache.fory.Fory.copyObject(Fory.java:1448) at org.apache.fory.serializer.AbstractObjectSerializer.copyFields(AbstractObjectSerializer.java:788) at org.apache.fory.serializer.AbstractObjectSerializer.copy(AbstractObjectSerializer.java:702) at org.apache.fory.Fory.copyObject(Fory.java:1488) at org.apache.fory.Fory.copyObject(Fory.java:1448) at org.apache.fory.serializer.AbstractObjectSerializer.copyFields(AbstractObjectSerializer.java:788) at org.apache.fory.serializer.AbstractObjectSerializer.copy(AbstractObjectSerializer.java:702) at org.apache.fory.Fory.copyObject(Fory.java:1488) at org.apache.fory.Fory.copyObject(Fory.java:1448) at org.apache.fory.Fory.copy(Fory.java:1372) ... 135 common frames omitted Wrapped by: org.apache.fory.exception.CopyException: java.lang.RuntimeException: Create sequential serializer failed, class: class org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader at org.apache.fory.Fory.processCopyError(Fory.java:373)

Component(s)

Java

Minimal reproduce step

Trying to just copy the object fails.

What did you expect to see?

A successful deepCopy of the object.

What did you see instead?

The given exception.

Anything Else?

No response

Are you willing to submit a PR?

  • I'm willing to submit a PR!

贡献者指南