Error creating bean with name ‘serverEndpointExporter‘

本文讲述了如何在SpringBoot项目中集成WebSocket时,遇到单元测试`javax.websocket.server.ServerContainerNotAvailable`错误,并介绍了如何通过修改`SpringBootTest`的webEnvironment属性来为测试提供适当环境,确保WebSocket功能正常工作。

https://blog.youkuaiyun.com/chunjusu2447/article/details/100820520

在SpringBoot项目中集成了WebSocket,在进行单元测试的时候,出现了以下错误:

javax.websocket.server.ServerContainer not available

在没有进行单元测试时候,项目还可以正常启动

单元测试类的原注解是这样的:

@RunWith(SpringRunner.class)
@SpringBootTest

经查阅资料,得知SpringBootTest在启动的时候不会启动服务器,所以WebSocket自然会报错,这个时候需要添加选项webEnvironment,以便提供一个测试的web环境。如下:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
### 解决方案 在处理 `Error creating bean with name 'serverEndpointExporter'` 错误时,通常是因为依赖项未能正确初始化或者配置文件存在问题。具体来说,在尝试实例化 `JedisConnectionFactory` 时抛出了 `NoClassDefFoundError` 异常[^1]。 #### 可能的原因分析: - **缺少必要的库**:如果项目中使用了 Redis 并且遇到了 `NoClassDefFoundError: redis/clients/util/Pool` 的错误,则表明可能缺失了一些 JAR 文件或版本不兼容。 - **配置问题**:检查应用程序属性文件中的 Redis 配置是否正确无误,比如主机地址、端口号等参数设置不当也会引发此类问题。 针对上述情况可以采取如下措施来解决问题: 1. 确认 Maven 或 Gradle 构建工具下的 POM.xml 或 build.gradle 中包含了最新的 Spring Data Redis 和 Jedis 客户端依赖,并确保这些包能够成功下载并编译进入项目的 classpath 中。 2. 如果已经确认所有必需的 jar 已经存在但仍报错,请清理本地仓库缓存重新构建工程;另外也可以尝试升级至更高版本的 spring-boot-starter-data-redis 来获得更好的支持和修复已知 bug。 3. 对于配置方面的问题,建议仔细核对 application.properties 或者 yaml 格式的配置文档里关于 Redis 连接池的相关设定是否有误,特别是对于某些特定环境变量可能导致默认值失效的情况更需留意。 4. 若以上方法均无法奏效,考虑查看日志输出寻找更多线索,有时候其他 Bean 初始化失败可能会间接影响到当前这个 Bean 的创建过程,因此全面排查整个启动流程有助于定位真正根源所在。 ```xml <!-- Example of adding dependency in pom.xml --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值