小编sig*_*ise的帖子

Mac Java 11 vs Java 8 dylib dlopen 错误:无法加载 libzstd.1.dylib

我有一个 libhadoopzstd.dylib,它是 JNI Hadoop ZSTD 实现的一部分。

libhadoopzstd.dylib包含对第二个 dylib 的 dlopen 调用libzstd.1.dylib- 假定在本地可用。

在 Java 8 (AdoptOpenJdk 1.8.0.211) 上一切正常。使用 Java 11 (AdoptOpenJdk 11.0.8) 编译器和 Java 11 运行时运行相同的代码会导致以下错误:

Error loading zstandard native libraries: java.lang.InternalError: Cannot load libzstd.1.dylib (dlopen(libzstd.1.dylib, 9): image not found)!
Run Code Online (Sandbox Code Playgroud)

我已经确认libzstd.1.dylib存在于/usr/local/lib. 我还尝试在运行 java 程序时明确指向LD_LIBRARY_PATH和java.system.path指向 libzstd dylib。

我已经在原始 C 代码中插入了打印语句,并重新编译了libhadoopzstd.dylib以尝试找出dlopen正在搜索dylib文件的路径。奇怪的是LD_LIBRARY_PATH,DYLD_FALLBACK_LIBRARY_PATH和JAVA_LIBRARY_PATH都显示为null从libhadoopzstd.dylib.

由于唯一的区别是 Java 版本,我认为 Java …

java java-native-interface dylib java-8 java-11

7
推荐指数
0
解决办法
151
查看次数

标签 统计

dylib ×1

java ×1

java-11 ×1

java-8 ×1

java-native-interface ×1