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

Jetty自定义Mongo会话持久化配置中的BSON异常

问题分析与解决方案

核心原因

你遇到的java.lang.IllegalAccessError本质是依赖版本冲突:Jetty的jetty-nosql模块默认依赖旧版MongoDB驱动(如2.x系列),而Spring Boot 2.3.0.RELEASE默认管理的MongoDB/BSON依赖是3.x+版本,两者的类结构、访问权限定义存在差异,导致com.mongodb.Bytes无法访问父类org.bson.BSON。

解决步骤

1. 排除冲突依赖

修改pom.xml,先排除jetty-nosql自带的旧版MongoDB驱动,避免版本冲突:

<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-nosql</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
        </exclusion>
    </exclusions>
</dependency>

2. 引入兼容的MongoDB驱动

添加Spring Boot官方维护的MongoDB starter,确保版本和Spring Boot 2.3.0.RELEASE完全兼容:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

3. 验证依赖一致性

执行mvn dependency:tree命令,确认所有MongoDB/BSON相关依赖的版本统一为Spring Boot 2.3.0.RELEASE对应的版本(默认是3.11.2)。

4. 检查配置类

你的JettyConfig配置逻辑无需修改,但要确保MongoDB服务正常运行,且指定的数据库bson、集合sessions可正常访问(驱动会自动创建不存在的库和集合)。

备选方案:锁定Jetty版本

如果上述方法仍有问题,可直接指定jetty-nosql版本为Spring Boot 2.3.0.RELEASE对应的Jetty版本(9.4.31.v20200723),进一步确保兼容性:

<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-nosql</artifactId>
    <version>9.4.31.v20200723</version>
    <exclusions>
        <exclusion>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
        </exclusion>
    </exclusions>
</dependency>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:59:58