我有两个 .so
文件 - A.so
和 B.so
,其中 A.so
需要 B.so
。
我使用 System.setProperty("java.library.path","thePath");
然后我检查 System.out.println(System.getProperty("java.library.path"));
然后我加载 A.so
使用 System.load("/absolutePath/A.so");
A.so
和B.so
在同一个目录下。
我得到的错误是B.so 找不到
。
我不能使用 LD_LIBRARY_PATH
。
ldd A.so
显示 B.so => ./B.so
我也用了System.loadLibrary("A");
但是错误是A找不到
。
最佳答案
java.library.path
仅用于直接从 Java 加载的库。依赖库只有在操作系统本身可以找到它们的情况下才会被发现。
如果您不能使用 LD_LIBRARY_PATH 并且 B 不在系统搜索路径中,则必须在 A 之前显式加载 B 及其绝对路径。然后操作系统会在进程内存中找到它。
关于java - JNI,在一个需要另一个的地方使用两个 .so 文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52508609/