Skip to content

[Bug]:Class org.redisson.api.RScript$ReturnType does not have member field 'org.redisson.api.RScript$ReturnType LONG' #3063

Description

@xiaoshuai288

问题描述

在使用 RedisAgentStateStore 进行 Agent 状态持久化测试时,运行抛出 NoSuchFieldError
异常发生在框架内部 RedissonClientAdapter.evalScript() 方法,代码硬编码使用 RScript.ReturnType.LONG
agentscope 2.0.3 的 jar 包通过 shade 内嵌了一份旧版 Redisson 类,内嵌版本的RScript.ReturnType枚举不存在 LONG 常量
虽然项目 POM 已经引入 Redisson 3.52.0(该版本包含 LONG 枚举),但是 JVM 类加载优先加载 AgentScope jar 内自带的旧 Redisson 类,编译正常,运行时报字段缺失。业务代码无法修改框架源码。

复现步骤

  1. 创建 SpringBoot 3.5.11 项目,pom 引入依赖:io.agentscope:agentscope:2.0.3redisson-spring-boot-starter:3.52.0
  2. 使用框架提供的 RedisAgentStateStore 实现 Agent 状态持久化
  3. 启动项目,触发状态持久化逻辑,底层会调用 RedissonClientAdapter.evalScript 执行 Lua 脚本
  4. 抛出 NoSuchFieldError 异常

预期行为

RedisAgentStateStore 正常执行 Lua 脚本完成 Agent 状态持久化;框架内嵌 Redisson 不应该和项目引入的 Redisson 发生类冲突。

报错信息

java.lang.NoSuchFieldError: No static field LONG of type Lorg/redisson/api/RScript$ReturnType;
	at io.agentscope.adapter.RedissonClientAdapter.evalScript(RedissonClientAdapter.java:228)
	at io.agentscope.storage.redis.RedisAgentStateStore.[相关持久化方法]

异常发生在虚拟线程,调用链路来自RedisAgentStateStore持久化流程。

运行环境

  • AgentScope-Java Version:2.0.3
  • Java Version:21
  • OS:Windows

补充说明

  1. Maven 依赖树显示项目依赖 Redisson 3.52.0,该版本RScript.ReturnType包含 LONG 枚举,版本本身没问题。
  2. 冲突根本原因:agentscope-2.0.3.jar使用 shade 打包内嵌旧 Redisson,未做包名 relocation 隔离;Maven 依赖树无法识别这种内嵌在 jar 里的 class。
  3. JVM 优先加载 agentscope 包内旧的org.redisson.api.RScript$ReturnType,该枚举缺少 LONG 常量。
  4. 触发场景:RedisAgentStateStore持久化 Agent 状态,底层调用RedissonClientAdapter.evalScript执行 Lua 脚本触发异常。
  5. 建议修复方案二选一:
    • 移除 shade 内嵌 Redisson,改用 Maven 正常依赖管理;
    • 对内置 Redisson 做包名重定向(relocation),避免与业务项目引入的 Redisson 产生类冲突。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions