Java应用无法连接Cassandra集群,抛出ClassNotFoundException异常求助
问题排查与解决方法
错误原因
- 核心依赖缺失:
com.datastax.oss.protocol.internal.SegmentCodec属于Cassandra Java Driver的protocol模块,你的项目未引入该模块,或依赖版本不匹配。 - 依赖冲突:若项目中同时引入了不同版本的Cassandra Driver组件(如shaded与非shaded版本混用),会导致类加载异常。
解决方法
1. 补充正确的依赖
根据项目构建工具(Maven/Gradle)添加对应版本的依赖,确保protocol模块被包含:
Maven示例
<!-- 推荐引入完整的核心驱动 --> <dependency> <groupId>com.datastax.oss</groupId> <artifactId>java-driver-core</artifactId> <version>4.13.0</version> </dependency> <!-- 若使用shaded版本,需搭配对应的protocol模块 --> <dependency> <groupId>com.datastax.oss</groupId> <artifactId>java-driver-core-shaded</artifactId> <version>4.13.0</version> </dependency> <dependency> <groupId>com.datastax.oss</groupId> <artifactId>java-driver-protocol</artifactId> <version>4.13.0</version> </dependency>
注意:禁止同时引入shaded和非shaded的core模块,避免依赖冲突。
2. 排查并清理依赖冲突
- Maven用户执行
mvn dependency:tree命令,Gradle用户执行./gradlew dependencies,查看依赖树中是否存在多版本的Cassandra Driver组件。 - 排除冲突的低版本或不兼容版本,统一使用与
java-driver-core-shaded-4.13.0.jar匹配的4.13.0版本。
3. 代码配置验证(后续步骤)
解决依赖问题后,确认withLocalDatacenter传入的数据中心名称与Cassandra集群实际名称一致,否则可能出现连接超时或路由错误。
内容的提问来源于stack exchange,提问作者Balaji4you
相关产品推荐
相关产品推荐

