fly-680 2023-07-24 20:58 采纳率: 100%
浏览 135
已结题

fastjson在jdk17下报错not support Type Annotation

工程里有个注解类(RocketMQMessage),通过日志框架打印日志的时候,会报错

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RocketMQMessage {
    String group();
    String topic();
}
Class<?> clazz = AopProxyUtils.ultimateTargetClass(bean);
RocketMQMessage annotation = clazz.getAnnotation(RocketMQMessage.class);

logger.info(JSON.toJSONString(annotation));

报错内容为:not support Type Annotation. 简答跟踪了一下代码,发现是fastjson在将对象转换为字符串时报错了,、

// fastjson AnnotationSerializer类
Object type;
try {
    type = sun_AnnotationType_getInstance.invoke(null, annotationClass);
} catch (Throwable ex) {
    sun_AnnotationType_error = true;
    throw new JSONException("not support Type Annotation.", ex);
}

报错的java环境为jdk17,fastjson版本为1.2.83。这个版本在jdk1.8不报错,jdk17用fastjson2不报错。
有对fastjson熟悉的解答一下吗?在jdk17下,对于注解类支持好像有问题?

  • 写回答

1条回答 默认 最新

  • Huazie 优质创作者: 编程框架技术领域 2023-07-25 00:02
    关注

    这不就说明了,fastjson的不同版本对应着不同的 jdk版本
    fastjson 1.2.83 ==> jdk 1.8
    fastjson2 ==> jdk 17
    实际上也是:

    img

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月12日
  • 专家已采纳回答 8月4日
  • 创建了问题 7月24日