【发布时间】:2016-09-21 14:17:21
【问题描述】:
不要问我为什么需要它,相信我,我会安装非常简单。我有 libjnitester.so 中的本机方法。 libjnitester.so 依赖于 libcall.so (库只是模拟真实的)。在调用本机方法之前,我需要将库动态安装到目录中。为此,我使用 File.mkdris 创建目录,然后调用 tar 将 tar.gz 提取到该目录中(我等待 tar 过程完成,因此在我调用 JNI 方法时文件肯定已经存在)。调用该方法时,我得到:
java.lang.UnsatisfiedLinkError: /.../libjnitester.so: libcall.so: 无法打开共享对象文件:没有这样的文件或目录
我指定了-Djava.library.path 并定义了LD_LIBRARY_PATH。我假设问题出在LD_LIBRARY_PATH - 中,因为我启动 JVM 时目录不存在,并且仅在执行期间创建,它被忽略。如果我预先创建目录(没有 .so 文件)然后启动 JVM 一切正常。
问题 - 如何使用我的 JNI 方法和它所依赖的 .so 文件将 .so 动态安装到新目录中?
【问题讨论】:
-
好的,这似乎是不可能的,我怀疑是这样的:stackoverflow.com/questions/5838092/…stackoverflow.com/questions/856116/…
标签: java java-native-interface