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

Java17/SpringBoot3.1.5迁移时Hazelcast依赖出现HttpSession解析错误

SpringBoot 3.x与Hazelcast版本兼容问题排查

问题场景

将项目从Java 8迁移至Java 17,同时将SpringBoot从2.7.2升级到3.1.5,同步升级Hazelcast至hazelcast-all 5.0-BETA-1版本后,出现代码报错。

相关代码

import jakarta.servlet.http.HttpSession;
import com.hazelcast.web.HazelcastHttpSession;

        HttpSession oldSession = request.getSession();
        oldSession.invalidate();
        //创建新会话
        HttpSession session = request.getSession(true);

        if (session instanceof HazelcastHttpSession) {
            sessionService.setSessions(session.getId(), new Session(session.getId(), new Date(), username));
        }

报错信息

  • 无法解析类型javax.servlet.http.HttpSession,它是所需类型com.hazelcast.web.HazelcastHttpSession的间接引用
  • 无法解析类型javax.servlet.http.HttpSession,它是所需类型com.hazelcast.web.WebFilter的间接引用

问题分析与解答

核心疑问

Hazelcast-all最新版本无法与SpringBoot 3.x兼容吗?看起来Hazelcast-all仍在使用javax.而非jakarta.。

分析与解决

是的,核心问题出在Hazelcast版本的Jakarta EE兼容性上:

  • SpringBoot 3.x基于Jakarta EE 9+规范,所有Servlet相关API已从javax.servlet迁移至jakarta.servlet包;
  • hazelcast-all 5.0-BETA-1依赖旧的javax.servlet API,与SpringBoot 3.x的Jakarta API包冲突,导致类解析错误。

解决方案:

  1. 升级Hazelcast至5.3及以上正式版:从5.3版本开始,Hazelcast全面支持Jakarta EE规范,将所有javax相关依赖替换为jakarta,完美适配SpringBoot 3.x;
  2. 临时桥接方案(不推荐):若需保留旧版Hazelcast,可添加Jakarta迁移桥接依赖,但可能引发其他兼容性问题,仅作为临时过渡使用。

注意:避免使用BETA版本的Hazelcast,正式GA版本的稳定性与兼容性更有保障。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 16:41:02