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

Slack Bolt 1.39.3与Java 21兼容问题及报错解决方案咨询

Slack Bolt与Java 21兼容问题解答

你的推测是否正确?

完全正确。这个ClassNotFoundException: javax.websocket.DeploymentException错误的核心原因就是命名空间迁移:Java EE的javax命名空间在Jakarta EE(Java 11+官方延续版本)中已全面替换为jakarta,而你使用的Slack Bolt 1.39.3的Socket Mode组件仍依赖旧的javax.websocket API,Java 21环境中没有这些类,因此抛出找不到类的异常。

实现兼容的具体方案

1. 切换到Slack Bolt的Jakarta兼容依赖

Slack官方针对Jakarta命名空间提供了专门的依赖变体,只需将原有依赖替换为带-jakarta后缀的版本:
原依赖:

// Maven坐标同理
implementation 'com.slack.api:bolt:1.39.3'
implementation 'com.slack.api:bolt-servlet:1.39.3'
implementation 'com.slack.api:bolt-socket-mode:1.39.3'

替换为:

implementation 'com.slack.api:bolt-jakarta:1.39.3'
implementation 'com.slack.api:bolt-servlet-jakarta:1.39.3'
implementation 'com.slack.api:bolt-socket-mode-jakarta:1.39.3'

2. 确保WebSocket容器依赖为Jakarta版本

如果项目使用Web容器(如Tomcat、Jetty),需使用支持Jakarta EE的版本:

  • Tomcat:使用10.x及以上版本,对应的WebSocket依赖:
implementation 'org.apache.tomcat.embed:tomcat-embed-websocket:10.1.18'
  • Jetty:使用11.x及以上版本,对应的WebSocket依赖:
implementation 'org.eclipse.jetty.websocket:jakarta-websocket-server:11.0.15'

3. 适配Spring Boot版本(若使用)

如果你的项目基于Spring Boot,必须升级到Spring Boot 3.x版本:

  • Spring Boot 3.x完全支持Jakarta EE 9+,适配Java 17-21;
  • Spring Boot 2.x仅支持Java EE(javax命名空间),无法与Java 21及Jakarta依赖兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:42:37