Infinispan 15.1.0运行时RocksDB JAR加载失败求助
Infinispan RocksDB持久化类未找到异常排查方案
核心问题定位
类未找到异常本质是RocksDB模块未被Infinispan服务器正确加载——哪怕JAR包路径正确,模块未激活或注册的话,服务器无法识别相关类。
排查与修复步骤
1. 确认RocksDB模块的注册状态
检查Infinispan服务器的模块目录(Docker容器内默认路径为/opt/infinispan/modules/system/layers/base/org/infinispan/persistence/rocksdb/main):
- 确保存在
module.xml文件,且文件内正确引用了RocksDB相关JAR包,示例片段:<module xmlns="urn:jboss:module:1.5" name="org.infinispan.persistence.rocksdb"> <resources> <resource-root path="infinispan-persistence-rocksdb-<VERSION>.jar"/> <resource-root path="rocksdbjni-<VERSION>.jar"/> </resources> <dependencies> <module name="org.infinispan.core"/> <module name="org.jboss.logging"/> </dependencies> </module> - 如果是自定义模块路径,需确保
modules.xml的依赖声明正确,且服务器能识别该路径。
2. 激活RocksDB模块(二选一即可)
方式一:通过Infinispan CLI激活
执行以下命令(需连接到服务器CLI):
container default module add org.infinispan.persistence.rocksdb # 保存配置避免重启失效 configuration default update --persistence true
方式二:修改全局配置文件激活
在infinispan.xml的<global>节点下添加模块依赖,确保服务器启动时自动加载:
<global> <modules> <module name="org.infinispan.persistence.rocksdb"/> </modules> </global>
3. 校验缓存配置的正确性
确保远程缓存的持久化配置中,RocksDB store的类和命名空间正确匹配Infinispan版本:
<local-cache name="yourRemoteCache"> <persistence passivation="false"> <rocksdb-store xmlns="urn:infinispan:config:rocksdb:<YOUR_INFINISPAN_VERSION>" path="/var/lib/infinispan/rocksdb/data" shared="false"> <expiration path="/var/lib/infinispan/rocksdb/expiration"/> </rocksdb-store> </persistence> </local-cache>
注意:命名空间的版本号必须与服务器版本一致,否则会导致配置解析失败或类加载错误。
4. Docker环境额外检查
- 确认JAR包和
module.xml已正确挂载到容器内的对应模块路径,避免路径映射错误。 - 启动容器时可直接指定加载模块的参数:
docker run -e INFINISPAN_MODULES=org.infinispan.persistence.rocksdb quay.io/infinispan/server:<VERSION>
5. 针对具体类名细化排查
查看服务器日志中的具体类名:
- 如果是
org.rocksdb.RocksDB:说明RocksDB核心JNI包未被模块加载,需检查module.xml是否包含rocksdbjni-*.jar的引用。 - 如果是
org.infinispan.persistence.rocksdb.RocksDBStore:说明Infinispan的RocksDB模块未被激活,回到步骤2重新操作。
内容的提问来源于stack exchange,提问作者sharadendu sinha
相关产品推荐
相关产品推荐

