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

将Axon Framework迁移至Java 17遇NoClassDefFoundError问题求助

Axon Framework适配Spring Boot 3与Jakarta EE迁移指南

针对你遇到的java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest错误,本质是Spring Boot 3全面切换到Jakarta EE API(替代原Java EE的javax API),Axon 4.8.0需通过特定依赖适配Jakarta环境,具体迁移步骤如下:

1. 切换Axon Starter依赖

移除原有的标准Axon Spring Boot Starter,替换为Jakarta专属版本:

<!-- 移除旧依赖 -->
<dependency>
    <groupId>org.axonframework</groupId>
    <artifactId>axon-spring-boot-starter</artifactId>
    <version>4.8.0</version>
</dependency>

<!-- 添加Jakarta版本的Starter -->
<dependency>
    <groupId>org.axonframework</groupId>
    <artifactId>axon-spring-boot-starter-jakarta</artifactId>
    <version>4.8.0</version>
</dependency>

2. 替换Axon核心模块依赖

如果项目中直接引入了Axon的其他模块(如axon-messaging、axon-server-connector等),同样需要替换为带-jakarta后缀的版本:

<!-- 示例:替换axon-messaging -->
<dependency>
    <groupId>org.axonframework</groupId>
    <artifactId>axon-messaging-jakarta</artifactId>
    <version>4.8.0</version>
</dependency>

<!-- 示例:替换axon-server-connector -->
<dependency>
    <groupId>org.axonframework</groupId>
    <artifactId>axon-server-connector-jakarta</artifactId>
    <version>4.8.0</version>
</dependency>

3. 替换代码中的包路径

全局替换代码中所有javax.*导入为jakarta.*:

  • 将import javax.servlet.http.HttpServletRequest;改为import jakarta.servlet.http.HttpServletRequest;
  • 涉及JPA、JMS等其他javax API的导入,同步替换为对应的jakarta.persistence.*、jakarta.jms.*等

4. 清理遗留的javax依赖

检查项目依赖树,确保没有残留的javax.servlet、javax.persistence等依赖项。可通过Maven命令排查:

mvn dependency:tree | grep javax

若发现遗留依赖,可通过<exclusions>标签排除,或替换为对应的Jakarta版本。

5. 验证配置文件

检查application.properties/application.yml中是否存在指向javax API的配置,Axon相关配置在Jakarta版本中无需额外调整,但需确保Spring Boot 3的配置符合Jakarta规范。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:17:16