Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG]2.0.26序列化MybatisPlus的 AbstractWrapper时报 java.lang.NoClassDefFoundError: IllegalName #1290

Closed
reducm opened this issue Mar 27, 2023 · 8 comments
Labels
bug Something isn't working fixed
Milestone

Comments

@reducm
Copy link

reducm commented Mar 27, 2023

问题描述

2.0.26序列化MybatisPlus的 AbstractWrapper时报 java.lang.NoClassDefFoundError: IllegalName

环境信息

请填写以下信息:

  • OS信息: CentOS 7 和 8
  • JDK信息: 1.8
  • 版本信息:2.0.26
    MyBatis Plus mybatis-plus-core:3.4.2

重现步骤

com.baomidou.mybatisplus.core.override.MybatisMapperMethod#execute 的 第二个入参数 Object args[]

JSONWriter配置

JSONWriter.Feature.FieldBased,
JSONWriter.Feature.IgnoreNonFieldGetter,
JSONWriter.Feature.IgnoreErrorGetter,
JSONWriter.Feature.WriteNonStringKeyAsString,
JSONWriter.Feature.WriteByteArrayAsBase64,
JSONWriter.Feature.ReferenceDetection

JSON.toJSONString(args)

期待的正确结果

之前的版本并没有这个报错

相关日志输出

2023-03-27 18:07:46 default WARN  on-event: event|RETURN|2775|2775|1025 occur an error.                                                                                                                                             [108/1496]
java.lang.NoClassDefFoundError: IllegalName: com.alibaba.fastjson2.writer.OWG_63_2_AbstractWrapper$$Lambda$115/916572243
        at java.lang.ClassLoader.preDefineClass(ClassLoader.java:654)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:761)
        at com.alibaba.fastjson2.util.DynamicClassLoader.defineClassPublic(DynamicClassLoader.java:171)
        at com.alibaba.fastjson2.writer.ObjectWriterCreatorASM.createObjectWriter(ObjectWriterCreatorASM.java:563)
        at com.alibaba.fastjson2.writer.ObjectWriterProvider.getObjectWriter(ObjectWriterProvider.java:333)
        at com.alibaba.fastjson2.JSONWriter$Context.getObjectWriter(JSONWriter.java:1598)
        at com.alibaba.fastjson2.writer.ObjectWriterImplList.write(ObjectWriterImplList.java:352)
        at com.alibaba.fastjson2.writer.FieldWriterObject.write(FieldWriterObject.java:311)
        at com.alibaba.fastjson2.writer.ObjectWriter6.write(ObjectWriter6.java:92)
        at com.alibaba.fastjson2.writer.OWG_10_6_MergeSegments.write(Unknown Source)
        at com.alibaba.fastjson2.writer.FieldWriterObject.write(FieldWriterObject.java:311)
        at com.alibaba.fastjson2.writer.ObjectWriter11.write(ObjectWriter11.java:107)
        at com.alibaba.fastjson2.writer.OWG_6_11_LambdaQueryWrapper.write(Unknown Source)
        at com.alibaba.fastjson2.writer.ObjectWriterArray.write(ObjectWriterArray.java:85)
        at com.alibaba.fastjson2.JSON.toJSONString(JSON.java:2466)
(   .... 业务代码调用 JSON.toJSONString)
        at com.alibaba.jvm.sandbox.api.listener.ext.AdviceAdapterListener.switchEvent(AdviceAdapterListener.java:118)
        at com.alibaba.jvm.sandbox.api.listener.ext.AdviceAdapterListener.onEvent(AdviceAdapterListener.java:39)
        at com.alibaba.jvm.sandbox.core.enhance.weaver.EventListenerHandler.handleEvent(EventListenerHandler.java:122)
        at com.alibaba.jvm.sandbox.core.enhance.weaver.EventListenerHandler.handleOnEnd(EventListenerHandler.java:464)
        at com.alibaba.jvm.sandbox.core.enhance.weaver.EventListenerHandler.handleOnReturn(EventListenerHandler.java:388)
        at java.com.alibaba.jvm.sandbox.spy.Spy.spyMethodOnReturn(Spy.java:192)
        at com.baomidou.mybatisplus.core.override.PageMapperMethod.execute(PageMapperMethod.java:118)
        at com.baomidou.mybatisplus.core.override.PageMapperProxy.invoke(PageMapperProxy.java:64)
        at com.sun.proxy.$Proxy74.selectList(Unknown Source)
@reducm reducm added the bug Something isn't working label Mar 27, 2023
@wenshao
Copy link
Member

wenshao commented Mar 27, 2023

https://oss.sonatype.org/content/repositories/snapshots/com/alibaba/fastjson2/fastjson2/2.0.27-SNAPSHOT/
问题已修复,请帮忙用2.0.27-SNAPSHOT版本验证

@wenshao wenshao added this to the 2.0.27 milestone Mar 27, 2023
@wenshao wenshao added the fixed label Mar 27, 2023
@ShiningXu
Copy link

问题描述

2.0.26序列化MybatisPlus的 AbstractWrapper时报 java.lang.NoClassDefFoundError: IllegalName

环境信息

请填写以下信息:

  • OS信息: CentOS 7 和 8
  • JDK信息: 1.8
  • 版本信息:2.0.26
    MyBatis Plus mybatis-plus-core:3.4.2

重现步骤

com.baomidou.mybatisplus.core.override.MybatisMapperMethod#execute 的 第二个入参数 Object args[]

JSONWriter配置

JSONWriter.Feature.FieldBased, JSONWriter.Feature.IgnoreNonFieldGetter, JSONWriter.Feature.IgnoreErrorGetter, JSONWriter.Feature.WriteNonStringKeyAsString, JSONWriter.Feature.WriteByteArrayAsBase64, JSONWriter.Feature.ReferenceDetection

JSON.toJSONString(args)

期待的正确结果

之前的版本并没有这个报错

相关日志输出

2023-03-27 18:07:46 default WARN  on-event: event|RETURN|2775|2775|1025 occur an error.                                                                                                                                             [108/1496]
java.lang.NoClassDefFoundError: IllegalName: com.alibaba.fastjson2.writer.OWG_63_2_AbstractWrapper$$Lambda$115/916572243
        at java.lang.ClassLoader.preDefineClass(ClassLoader.java:654)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:761)
        at com.alibaba.fastjson2.util.DynamicClassLoader.defineClassPublic(DynamicClassLoader.java:171)
        at com.alibaba.fastjson2.writer.ObjectWriterCreatorASM.createObjectWriter(ObjectWriterCreatorASM.java:563)
        at com.alibaba.fastjson2.writer.ObjectWriterProvider.getObjectWriter(ObjectWriterProvider.java:333)
        at com.alibaba.fastjson2.JSONWriter$Context.getObjectWriter(JSONWriter.java:1598)
        at com.alibaba.fastjson2.writer.ObjectWriterImplList.write(ObjectWriterImplList.java:352)
        at com.alibaba.fastjson2.writer.FieldWriterObject.write(FieldWriterObject.java:311)
        at com.alibaba.fastjson2.writer.ObjectWriter6.write(ObjectWriter6.java:92)
        at com.alibaba.fastjson2.writer.OWG_10_6_MergeSegments.write(Unknown Source)
        at com.alibaba.fastjson2.writer.FieldWriterObject.write(FieldWriterObject.java:311)
        at com.alibaba.fastjson2.writer.ObjectWriter11.write(ObjectWriter11.java:107)
        at com.alibaba.fastjson2.writer.OWG_6_11_LambdaQueryWrapper.write(Unknown Source)
        at com.alibaba.fastjson2.writer.ObjectWriterArray.write(ObjectWriterArray.java:85)
        at com.alibaba.fastjson2.JSON.toJSONString(JSON.java:2466)
(   .... 业务代码调用 JSON.toJSONString)
        at com.alibaba.jvm.sandbox.api.listener.ext.AdviceAdapterListener.switchEvent(AdviceAdapterListener.java:118)
        at com.alibaba.jvm.sandbox.api.listener.ext.AdviceAdapterListener.onEvent(AdviceAdapterListener.java:39)
        at com.alibaba.jvm.sandbox.core.enhance.weaver.EventListenerHandler.handleEvent(EventListenerHandler.java:122)
        at com.alibaba.jvm.sandbox.core.enhance.weaver.EventListenerHandler.handleOnEnd(EventListenerHandler.java:464)
        at com.alibaba.jvm.sandbox.core.enhance.weaver.EventListenerHandler.handleOnReturn(EventListenerHandler.java:388)
        at java.com.alibaba.jvm.sandbox.spy.Spy.spyMethodOnReturn(Spy.java:192)
        at com.baomidou.mybatisplus.core.override.PageMapperMethod.execute(PageMapperMethod.java:118)
        at com.baomidou.mybatisplus.core.override.PageMapperProxy.invoke(PageMapperProxy.java:64)
        at com.sun.proxy.$Proxy74.selectList(Unknown Source)

您好 咨询一下,这是在做录制回放的参数序列化? 没有考虑迁移到JSONB吗?

@reducm
Copy link
Author

reducm commented Mar 28, 2023

@ShiningXu 是的在我司做写录制和回放相关,fastjson序列化这方面产生了不少坑。jsonb虽然能压缩数据提高传输效率,但目前遇到主要的问题,除了适配各种Enum,大小写,类型之类的业务匹配问题以外,比较严重的是序列化一些大的对象造成业务系统问题,fj是从1踩到2,各种oom/stackoverflow之类都趟过了 。

@ShiningXu
Copy link

@ShiningXu 是的在我司做写录制和回放相关,fastjson序列化这方面产生了不少坑。jsonb虽然能压缩数据提高传输效率,但目前遇到主要的问题,除了适配各种Enum,大小写,类型之类的业务匹配问题以外,比较严重的是序列化一些大的对象造成业务系统问题,fj是从1踩到2,各种oom/stackoverflow之类都趟过了 。

握个抓,和我们一模一样的历程😆。试用下来发现hessian的兼容性真的好,我们想跳过JSON,趟一下JSONB的坑,提升一下性能,但发现问题还是太多了,每个插件都要单独定制测试。 留个联系方式吧,有时间可以交流下~

@reducm
Copy link
Author

reducm commented Mar 28, 2023

@ShiningXu wx: jojo_jas

@wenshao
Copy link
Member

wenshao commented Mar 30, 2023

我的微信 wenshaojin

@wenshao
Copy link
Member

wenshao commented Apr 8, 2023

https://github.com/alibaba/fastjson2/releases/tag/2.0.27
问题已修复,请用新版本

@reducm
Copy link
Author

reducm commented Apr 13, 2023

经测试,最新FieldBase情况下 2.0.28-snapshot已解决问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working fixed
Projects
None yet
Development

No branches or pull requests

3 participants