【发布时间】:2012-11-20 14:59:18
【问题描述】:
我有一个通过 JNI 调用 C 代码的 Java 程序,我试图在 Linux 上运行该程序。外部代码由两个 .so 文件组成:一个用于 JNI 绑定(使用 swig 构建),另一个用于实际功能。我在同一个目录中有两个库,并且 LD_LIBRARY_PATH 设置正确。 ldd 从命令行运行时没有报告任何问题,但是当我在 Eclipse 编辑器的“运行配置”对话框中将 LD_LIBRARY_PATH 设置为相同的值并尝试执行程序时,会出现以下错误:
java.lang.UnsatisfiedLinkError: [path to libraries]/[JNI binding library].so: [actual code library].so: cannot open shared object file: No such file or directory
这让我相信 JNI 包装器库已成功加载,但是当该库尝试加载包含实际代码的库时会失败。有什么办法可以进一步调试吗?
我会进一步指出,这个问题发生在 eclipse 编辑器本身中,我没有尝试将代码打包到 jar 中并在独立的 jvm 实例中运行。
【问题讨论】:
标签: java eclipse java-native-interface