java - JNI,在一个需要另一个的地方使用两个 .so 文件时出错

标签 java c++ tomcat java-native-interface shared-libraries

我有两个 .so 文件 - A.soB.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.soB.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/

相关文章:

spring - URL tuckey - 出站规则

java - 如何使用内容uri检查文件是否存在

c++ - 内存管理 : Returning a vector element and deleting(pop_back) it

c++ - c++中模板的部分特化

c++ - 从资源中加载图像并转换为内存中的位图

java - Hibernate 和 Oracle10g : Tomcat times out

java - 无法在 Java 中解析 web.xml 文件

java - 如何通过android连接SMSC模拟器?

java - 使用 mysql 驱动程序使用 mysql 数据库设置 spring-boot 项目

java - JScrollpane中自定义滚动条//Java Swing