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

Spring WebSocket启动报错:无法从ClassLoader分析WebSocketHandlerMapping类

解决Spring WebSocket启动时Failed to introspect Class WebSocketHandlerMapping的问题

这个报错通常是依赖版本不兼容或者缺失必要依赖导致的,结合你的pom.xml配置,我发现几个关键问题,一步步来解决:

1. 替换手动引入的WebSocket依赖为Spring Boot Starter

你现在手动引入了spring-websocket和spring-messaging,但没有使用Spring Boot官方提供的spring-boot-starter-websocket。这个starter会自动帮你管理所有WebSocket相关依赖的版本兼容性,避免手动引入带来的版本冲突。

把这两个依赖:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-websocket</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-messaging</artifactId>
</dependency>

替换为:

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

2. 修复Spring Session的版本冲突

你的pom里用了spring-session的1.0.0.BUILD-SNAPSHOT版本,这个版本是非常老旧的快照版,和你使用的Spring Boot 2.0.2.RELEASE完全不兼容(Spring Boot 2.x对应的Spring Session版本应该是2.x系列)。版本不匹配会导致Spring核心类的版本冲突,进而引发类 introspect 失败的错误。

修改Spring Session的依赖,去掉手动指定的版本(让Spring Boot Parent自动管理兼容版本):

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session</artifactId>
</dependency>

或者手动指定匹配的版本,比如2.0.4.RELEASE(和Spring Boot 2.0.2兼容)。

3. 清理Maven缓存并重新构建

有时候本地Maven缓存的旧依赖会导致问题,执行以下命令清理缓存并重新下载依赖:

mvn clean install -U

4. 检查依赖树排查其他冲突

如果以上步骤还没解决问题,运行以下命令查看完整的依赖树,找出是否有其他版本冲突的依赖(比如Spring核心模块的版本不一致):

mvn dependency:tree

重点关注spring-core、spring-context等核心模块的版本,确保所有依赖都使用Spring Boot Parent管理的版本。

为什么会出现这个错误?

Failed to introspect Class本质是JVM在加载类时,无法找到该类依赖的其他类/方法,或者依赖的类版本不兼容。你遇到的情况主要是因为:

  • 手动引入WebSocket相关模块,没有利用Spring Boot Starter的版本管理
  • Spring Session版本过于老旧,和Spring Boot 2.x的核心依赖版本冲突

按照上面的步骤修改后,应该能解决启动问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:42:35