RocksDB 在 macOS M 系列 上运行时报错的解决方案

问题现象

项目中引入可Kafka Stream ,Windows下启动不报错 ,但是在 macOS M系列 环境下就会报错,初步定位是使用 Java 项目调用 RocksDB 时,运行过程中出现以下报错:

  • UnsatisfiedLinkError: no rocksdbjni in java.library.path
  • 或者 librocksdbjni.dylib 无法被正确加载。
java 复制代码
Exception in thread "kafka-streams-app001-f566769f-d99b-45fa-9a5a-5ebf722fd601-StreamThread-1" java.lang.UnsatisfiedLinkError: Can't load library: /var/folders/qj/l1h4j0mj0bs56qd20d4sr3_40000gn/T/librocksdbjni13358465134412954828.jnilib
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2622)
	at java.base/java.lang.Runtime.load0(Runtime.java:765)
	at java.base/java.lang.System.load(System.java:1852)
	at org.rocksdb.NativeLibraryLoader.loadLibraryFromJar(NativeLibraryLoader.java:78)
	at org.rocksdb.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:56)
	at org.rocksdb.RocksDB.loadLibrary(RocksDB.java:64)
	at org.rocksdb.RocksDB.<clinit>(RocksDB.java:35)
	at org.rocksdb.DBOptions.<clinit>(DBOptions.java:21)
	at 

原因分析

  1. 缺少 JNI 动态库依赖 :RocksDB Java 依赖 rocksdbjni,需要正确的本地动态库(.dylib)文件。

  2. 依赖未引入 :Java 层需要 rocksdbjni 的 Maven 依赖

解决方案

  1. 添加 Java 依赖

    在项目的 pom.xml 中引入 RocksDB Java 依赖:

    xml 复制代码
    <dependency>
        <groupId>org.rocksdb</groupId>
        <artifactId>rocksdbjni</artifactId>
        <version>8.3.2</version> <!-- 请使用最新稳定版本 -->
    </dependency>

添加依赖之后 RocksDB 会以内嵌库的形式打包进应用,无需单独安装系统级 RocksDB。

总结

  • 必须引入 rocksdbjni 依赖,否则缺少 JNI 支持。

这样 macOS M系列 上即可成功运行 RocksDB。

相关推荐
西木Qi7 小时前
Kafka消息中间件安装配置
kafka
咕噜签名分发冰淇淋9 小时前
苹果ipa应用安装包ios系统闪退问题
macos·ios·cocoa
xhbh66612 小时前
MySQL服务启动命令手册(Linux+Windows+macOS)(下)
数据库·mysql·macos·mysql启动命令·mysql 启动
是店小二呀12 小时前
Linux | 走进网络世界:MAC、IP 与通信的那些事
linux·网络·macos
闲人一小枚15 小时前
mac Monterey 安装svn(已解决)
macos·svn
小山菌16 小时前
mac中进行适用于IOS的静态库构建
macos·ios·cocoa
goodmao17 小时前
【macOS】垃圾箱中文件无法清理的常规方法
macos
鼠鼠我捏,要死了捏18 小时前
生产环境Spark Structured Streaming实时数据处理应用实践分享
spark·kafka·structuredstreaming
ClouGence18 小时前
Kafka vs RabbitMQ vs RocketMQ vs Pulsar:四大开源消息中间件全面对比
kafka·消息队列·开源