Apache Cassandra 3.11.2在Windows 10启动时出现Java异常求助
解决Windows 10上Apache Cassandra 3.11.2启动的Java异常问题
先来看你提供的debug日志核心错误片段:
ERROR [SSTableBatchOpen:1] 2018-05-21 13:42:40,092 DebuggableThreadPoolExecutor.java:239 - Error in ThreadPoolExecutor java.lang.NoClassDefFoundError: com/github/benmanes/caffeine/cache/LocalCacheFactory$WISWR at com.github.benmanes.caffeine.cache.BoundedLocalCache$BoundedLocalManualCache.<init>(BoundedLocalCache.java:2727) ~[caffeine-2.2.6.jar:na] ... Caused by: java.util.zip.ZipException: invalid distance too far back at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164) ~[na:1.8.0_60]
嘿,我帮你拆解了这个问题,核心原因是你的caffeine-2.2.6.jar依赖包损坏了,才引发了一系列类加载错误。具体来看:
问题根源拆解
从日志里的错误链能看出来:
- 最底层的
java.util.zip.ZipException: invalid distance too far back说明JVM在读取caffeine-2.2.6.jar时,发现这个压缩包已经损坏,没法正常解压 - 紧接着就出现
ClassNotFoundException——因为读不了损坏的JAR,自然找不到里面的LocalCacheFactory$WISWR类 - 最后导致
NoClassDefFoundError,Cassandra的ChunkCache初始化失败,连带着SSTable加载也出了问题
具体修复步骤
第一步:替换损坏的Caffeine JAR包
- 找到你的Cassandra安装目录下的
lib文件夹,路径应该是C:\Users\Micha艂\Downloads\apache-cassandra-3.11.2\lib - 删掉里面的
caffeine-2.2.6.jar文件 - 下载2.2.6版本的Caffeine官方JAR包(一定要对应版本,不然会有兼容性问题)
- 把新下载的JAR包放回
lib文件夹里
- 找到你的Cassandra安装目录下的
第二步:兜底方案(如果替换单个JAR没用)
要是换完Caffeine还是报错,可能其他依赖包也有损坏:- 先备份好当前的
lib文件夹 - 重新下载Apache Cassandra 3.11.2的完整安装包
- 用新安装包里的
lib文件夹直接替换旧的
- 先备份好当前的
第三步:清理缓存(可选但推荐)
替换完JAR包后,清理下Cassandra的缓存能避免残留问题:- 确保Cassandra已经停止运行
- 删除
C:\Users\Micha艂\Downloads\apache-cassandra-3.11.2\data\cache目录下的所有文件 - 重新启动Cassandra
小提醒
下载JAR包或者Cassandra安装包的时候,尽量用官方渠道,别中途暂停下载,很容易导致文件损坏。另外Windows上的杀毒软件有时候会误改JAR文件,替换的时候可以暂时关掉试试。
内容的提问来源于stack exchange,提问作者michj36
相关产品推荐
相关产品推荐

