[alibaba/fastjson]使用fastjson序列化数据时,ASM报java.lang.NoSuchMethodError: com.alibaba.fastjson.serializer.JavaBeanSerializer.processValue

2025-11-11 61 views
5
背景介绍:

代码:一段几个月前的老代码 变更: 将fastjson从1.2.57升级到1.2.61

异常堆栈:
java.lang.NoSuchMethodError: com.alibaba.fastjson.serializer.JavaBeanSerializer.processValue(Lcom/alibaba/fastjson/serializer/JSONSerializer;Lcom/alibaba/fastjson/serializer/BeanContext;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;Ljava/lang/Integer;
    at com.alibaba.fastjson.serializer.ASMSerializer_1_CurrentUserBO.writeNormal(Unknown Source) ~[na:na]
    at com.alibaba.fastjson.serializer.ASMSerializer_1_CurrentUserBO.write(Unknown Source) ~[na:na]
    at com.alibaba.fastjson.serializer.JSONSerializer.write(JSONSerializer.java:285) ~[fastjson-1.2.61.jar:na]
    at com.alibaba.fastjson.JSON.toJSONBytes(JSON.java:825) ~[fastjson-1.2.61.jar:na]
    at com.alibaba.fastjson.JSON.toJSONBytes(JSON.java:796) ~[fastjson-1.2.61.jar:na]
    at com.alibaba.fastjson.JSON.toJSONBytes(JSON.java:789) ~[fastjson-1.2.61.jar:na]
    at com.alibaba.fastjson.JSON.toJSONBytes(JSON.java:771) ~[fastjson-1.2.61.jar:na]
    at com.alibaba.fastjson.JSON.toJSONBytes(JSON.java:698) ~[fastjson-1.2.61.jar:na]
    at com.alibaba.fastjson.JSON.toJSONBytes(JSON.java:687) ~[fastjson-1.2.61.jar:na]
    at com.alibaba.fastjson.support.spring.GenericFastJsonRedisSerializer.serialize(GenericFastJsonRedisSerializer.java:24) ~[fastjson-1.2.61.jar:na]
    at org.springframework.data.redis.core.AbstractOperations.rawValue(AbstractOperations.java:117) ~[spring-data-redis-1.8.12.RELEASE.jar:na]
    at org.springframework.data.redis.core.DefaultValueOperations.set(DefaultValueOperations.java:180) ~[spring-data-redis-1.8.12.RELEASE.jar:na]
    at com.user.app.cache.impl.UserCacheServiceImpl.cacheCurrentLoginUser(UserCacheServiceImpl.java:48) ~[classes/:na]
    at com.user.app.service.impl.LoginServiceImpl.tokenLogin(LoginServiceImpl.java:112) ~[classes/:na]
    at com.user.app.service.impl.LoginServiceImpl.mobileLogin(LoginServiceImpl.java:86) ~[classes/:na]
    at com.user.app.service.impl.MobileLoginServiceImpl.login(MobileLoginServiceImpl.java:51) ~[classes/:na]
    at com.user.app.controller.AppUserController.login(AppUserController.java:130) ~[classes/:na]
    at com.user.app.controller.AppUserController$$FastClassBySpringCGLIB$$7dc4b154.invoke(<generated>) ~[classes/:na]
相关的java代码:
    @Override
    public void cacheCurrentLoginUser(Integer userId, Integer sourceType, String mobile, Integer invoiceInfoId) {
        CurrentUserBO currentUserBO = new CurrentUserBO();
        currentUserBO.setMobile(mobile);
        currentUserBO.setInvoiceId(invoiceInfoId);
        String key = CacheKeyManager.fillKey(CURRENT_USER_KEY, userId, sourceType);
        redisTemplate.opsForValue().set(key, currentUserBO, COOKIE_MAX_AGE, TimeUnit.SECONDS); //此行代码报错
    }

RedisTemplate中FastJsonRedisSerializer的使用:

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        GenericFastJsonRedisSerializer fastJsonRedisSerializer = new GenericFastJsonRedisSerializer();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setDefaultSerializer(fastJsonRedisSerializer);//设置默认的Serialize,包含 keySerializer & valueSerializer
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
    }

涉及到的BO:

import lombok.Data;

/**
 * @Description:
 */
@Data
public class CurrentUserBO {

    /**
     * 抬头Id
     */
    private Integer invoiceId;

    /**
     * userId和invoiceId关联的手机号
     */
    private String mobile;

}

回答

9

Duplicate of #2763

4

同样问题

1

同样问题

4

升级到1.2.62时还是会报这个错误呢。 java.lang.NoSuchMethodError: com.alibaba.fastjson.serializer.JavaBeanSerializer.processValue(Lcom/alibaba/fastjson/serializer/JSONSerializer;Lcom/alibaba/fastjson/serializer/BeanContext;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;Ljava/lang/Integer; at com.alibaba.fastjson.serializer.ASMSerializer_1_GetAvailabilityByFlightRequestBean.writeNormal(Unknown Source) ~[na:na] at com.alibaba.fastjson.serializer.ASMSerializer_1_GetAvailabilityByFlightRequestBean.write(Unknown Source) ~[na:na] at com.alibaba.fastjson.serializer.MapSerializer.write(MapSerializer.java:271) ~[fastjson-1.2.62.jar:na] at com.alibaba.fastjson.serializer.MapSerializer.write(MapSerializer.java:44) ~[fastjson-1.2.62.jar:na] at com.alibaba.fastjson.serializer.MapSerializer.write(MapSerializer.java:271) ~[fastjson-1.2.62.jar:na] at com.alibaba.fastjson.serializer.MapSerializer.write(MapSerializer.java:44) ~[fastjson-1.2.62.jar:na] at com.alibaba.fastjson.serializer.JSONSerializer.write(JSONSerializer.java:285) ~[fastjson-1.2.62.jar:na]

1

@zhaotingwen 1.2.62还有这个问题.温少让Nameless·Ariston找我修过了。 我这边环境的兼容性问题已修复。

现在坐等@wenshao发版

1

预计什么时候可以修复这个问题

9

坐等发版

6

waiting...

0

在windows下会报这个错,在macOS 和 ubuntu下不会。

1

升级到1.2.62版本仍然存在这个问题,老的版本不存在这个问题,期待这个问题的解决。

6

how to solve it.

9

新版本怎么解决这个问题呢

6

在windows下会报这个错,在macOS 和 ubuntu下不会。

centos7也不会报错,windows10下确实报错

0

@13438344431 return to 1.2.58 @Liuliya503288309 退回 1.2.58 ,我这边正常了。

3

1.2.62 win10报错,求下个版本解决

5

1.2.58解决。。

9

v1.2.60也是正常的

5

@13438344431 return to 1.2.58 @Liuliya503288309 退回 1.2.58 ,我这边正常了。

1.2.58有漏洞哦

7

1.2.58解决。。

1.2.58有漏洞哦

9

v1.2.60也是正常的

1.2.60有安全隐患哦

2

@helloworldtang 只有等作者修复,换jackson代价太大了....

9

the same question

0

the same question

3

the same question

8

V1.2.60版本好, 但是以上的版本都不行。系统:mac V:10.15, 暂时还不知道在centos是否有问题。但是有的兄弟说这个版本不能在centos系统使用。

2

mac系统也报错 1.2.62

4

mac系统也报错 1.2.62,看到有说win10,mac操作系统版本不同还报错的,好神奇

3

same behaviour

7

win10系统1.2.62有问题,请问修复了没有 java.lang.NoSuchMethodError: com.alibaba.fastjson.serializer.JavaBeanSerializer.processValue

1

how to solve

9

how to solve

Win10 still has problems

5

同样的问题,win10出问题

7

mark一下,等待修复

5

马一下,等待修复

7

先降版本吧

5

1.2.62,Mac系统,还是这个问题,求修复

3

诺诺的问一句,还没有修复么?

6

诺诺的问一句,还没有修复么?

我升到1.2.66 没报这个错了

1

我升到1.2.66 也没报这个错了 Mac 10.15.3

8

So???要升级到1.2.66才行咯??