mac java 11 vs java 8 dylib dlopen错误:无法加载libzstd.1.dylib

wvyml7n5  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(422)

我有一个libhadoopzstd.dylib,它是JNIHadoopzstd实现的一部分。 libhadoopzstd.dylib 包含对第二个dylib的dlopen调用- libzstd.1.dylib -假设在本地可用。
在Java8上一切都正常(采用OpenJDK1.8.0.211)。使用java 11(OpenJDK 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)!

我已经证实了 libzstd.1.dylib 存在于 /usr/local/lib . 我也试图明确指出 LD_LIBRARY_PATH 以及 java.system.path 在运行java程序时,添加到libzstd dylib。
我在原来的c代码中插入了print语句,并重新编译了 libhadoopzstd.dylib 试着找出什么路 dlopen 正在搜索 dylib 中的文件。奇怪的是 LD_LIBRARY_PATH , DYLD_FALLBACK_LIBRARY_PATH 以及 JAVA_LIBRARY_PATH 全部显示为 null 从内部 libhadoopzstd.dylib .
由于唯一的区别是java版本,我认为Java11对Java8所没有的路径做了一些不同的事情。有人知道这是不是真的吗?
而且,有人知道什么路吗 dlopen 从jvm中运行时进行搜索?怎么能证实这一点呢?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题