alibaba / alibaba/fastjson2

fastjson2 内部使用 KClassImpl 来获取 Kotlin 构造参数信息,但 Kotlin 1.6+ 已经将 KClassImpl 重命名为 KClassesImplKt

Open
#3,579 13 comments 0 reactions 1 assignee Claimed by @kraity View on GitHub
bug
Dominant language
Java
Stars
4.4k
Forks
613
Avg merge
1d 22h
Merged PRs (30d)
6

Description

### 问题描述
fastjson2 内部使用 KClassImpl 来获取 Kotlin 构造参数信息,但 Kotlin 1.6+ 已经将 KClassImpl 重命名为 KClassesImplKt,导致 Class.forName("kotlin.reflect.jvm.internal.KClassImpl") 抛出 ClassNotFoundException,最终 paramNames 为 null,引发 NullPointerException。

### 环境信息
*请填写以下信息:*

- OS信息: win11
- JDK信息: [e.g.:Openjdk 24.0.1]
- 版本信息:[e.g.:Fastjson2 2.0.57]

### 重现步骤
*如何操作可以重现该问题:*

1. 使用 `xxx.xxx` 方法
2. 输入 `...` 数据
3. 出现 `...` 错误
```java
//可在此输入示例代码
```

### 期待的正确结果
*对您期望发生的结果进行清晰简洁的描述。*

### 相关日志输出
WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
WARNING: sun.misc.Unsafe::arrayBaseOffset has been called by com.alibaba.fastjson2.util.JDKUtils (file:/D:/repository/com/alibaba/fastjson2/fastjson2/2.0.57/fastjson2-2.0.57.jar)
WARNING: Please consider reporting this to the maintainers of class com.alibaba.fastjson2.util.JDKUtils
WARNING: sun.misc.Unsafe::arrayBaseOffset will be removed in a future release
Exception in thread "main" com.alibaba.fastjson2.JSONException: JSON#toJSONString cannot serialize 'ApiLoginUser(userId=1, uuid=abc, loginTime=2025-06-04T15:17:24.506433500, expireTime=2025-06-04T15:17:24.506433500)'
at com.alibaba.fastjson2.JSON.toJSONString(JSON.java:3091)
at com.alibaba.fastjson2.JSONKt.toJSONString(JSON.kt:537)
at com.ruoyi.TestJson2.main(TestJson2.java:15)
Caused by: java.lang.NullPointerException: Cannot read the array length because "paramNames" is null
at com.alibaba.fastjson2.writer.ObjectWriterBaseModule$WriterAnnotationProcessor.getFieldInfo(ObjectWriterBaseModule.java:311)
at com.alibaba.fastjson2.writer.ObjectWriterProvider.getFieldInfo(ObjectWriterProvider.java:235)
at com.alibaba.fastjson2.writer.ObjectWriterCreator.creteFieldWriter(ObjectWriterCreator.java:147)
at com.alibaba.fastjson2.writer.ObjectWriterCreatorASM.lambda$createObjectWriter$0(ObjectWriterCreatorASM.java:227)
at com.alibaba.fastjson2.util.BeanUtils.declaredFields(BeanUtils.java:324)
at com.alibaba.fastjson2.writer.ObjectWriterCreatorASM.createObjectWriter(ObjectWriterCreatorASM.java:223)
at com.alibaba.fastjson2.writer.ObjectWriterProvider.getObjectWriterInternal(ObjectWriterProvider.java:464)
at com.alibaba.fastjson2.writer.ObjectWriterProvider.getObjectWriter(ObjectWriterProvider.java:340)
at com.alibaba.fastjson2.JSON.toJSONString(JSON.java:3081)
... 2 more

#### 附加信息
*如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。*

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.