You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java8迁移至Java17后GemFire PDX序列化异常,求替代--add-opens方案

Java 8 迁移至 Java 17 时 GemFire PDX 序列化 java.lang.string.value 访问异常问题

应用从 Java 8 迁移到 Java 17 后,使用 GemFire 缓存默认的 PDX 序列化时,仅在 Java 17 环境下序列化会抛出 java.lang.string.value 不可访问异常。目前 Spring-geode-starter 暂无新版本修复该问题。

已尝试的方案及结果:

  • 通过 env.ini 配置 --add-opens 参数开放 java.util、java.math、java.time、sun.security 等多个 Java 内部包以支持序列化,但因涉及数千个应用,该配置方式维护成本极高
  • 尝试代码重构(将 String 替换为 byte[]、char[]、StringBuilder 等)、module-info 配置、VarHandle 方案,均未解决问题
  • 使用 BurningWave 依赖可解决异常,但担忧其采用不安全实现,希望找到合规的解决方案(含代码重构方向)

当前代码示例:

public class Test implements PdxSerializable {

    private String name;
    private JsonWebKey jwk;
    private LocalDateTime created;

    // 所有字段的 getter 和 setter 方法

    @Override
    public void toData(PdxWriter pdxWriter) {
        pdxWriter.writeString("name", getName()).markIdentityField("name");
        pdxWriter.writeString("created", getCreated().toString()).markIdentityField("created");
        pdxWriter.writeString("jwk", getJwk().toString()).markIdentityField("jwk");
    }

    // 需实现 fromData 方法,原代码未提供
    @Override
    public void fromData(PdxReader pdxReader) {
        // 对应字段读取逻辑
    }
}

内容的提问来源于stack exchange,提问作者user29731474

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 21:07:36