【发布时间】:2015-03-23 17:49:57
【问题描述】:
我正在尝试在我的 Java 代码中使用 C++ 编译库。我将java.library.path 设置为/usr/local/lib/,并且在那里安装了库的所有.so 文件。
但是,当我尝试运行 Java 应用程序时,我看到以下内容:
Native code library failed to load.
java.lang.UnsatisfiedLinkError: /usr/local/lib/libA.so: libB.so.2.4: cannot open shared object file: No such file or directory
但是文件似乎在那里:
ls /usr/local/lib/libB.so.2.4
lrwxrwxrwx 1 root root 20 Jan 24 16:33 /usr/local/lib/libB.so.2.4 -> libB.so.2.4.5
符号链接文件也存在。知道为什么找不到这个库吗?
【问题讨论】:
-
你跑
sudo ldconfig了吗? -
@ElliottFrisch 刚刚尝试过。它没有帮助
-
值得检查文件权限。或者您可以使用 strace 来查看它正在尝试做什么。您还可以作为测试 System.load() 确切的文件名并查看是否/如何失败,可能再次在 strace 下。
-
@ElliottFrisch 好的,所以我将
/usr/local/lib添加到/etc/ld.so.conf,然后重新运行,似乎已经解决了问题。 -
如果有人能详细解释这是如何解决问题的,我很乐意接受这个答案
标签: java c++ java-native-interface shared-libraries