java - 加载共享库时出错;无法打开共享对象文件 : No such file or directory

标签 java ubuntu java-native-interface shared-libraries unsatisfiedlinkerror

我在 Ubuntu 操作系统上从 java 类加载共享库 (JNI) 时遇到问题

Exception in thread "main" java.lang.UnsatisfiedLinkError: /opt/ETcpsdk/lib/linux-x86_64/libjcryptoki.so: libcryptoki.so: cannot open shared object file: No such file or directory
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1880)
    at java.lang.Runtime.loadLibrary0(Runtime.java:849)
    at java.lang.System.loadLibrary(System.java:1088)
    at tutorialjni.Test.<clinit>(Test.java:7)

- 测试.java

package tutorialjni;

public class Test {

    // Load an external library, called "jcryptoki"
    static {
        System.loadLibrary("jcryptoki");
    }

    public static void main(String[] args) {
        System.out.println(System.getProperty("java.library.path"));
    }

}

- LD_LIBRARY_PATH 在/etc/environment 中分配

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
JAVA_HOME="/opt/jdk1.7.0_75"
LD_LIBRARY_PATH="/opt/ETcpsdk/lib/linux-x86_64:/opt/ETcpsdk/lib/"

我拥有 ETcpsdk 文件夹。

  • libcryptoki.so 放入/opt/ETcpsdk/lib/linux-x86_64/libcryptoki.so

  • 运行文件libcryptoki.so命令

    libjcryptoki.so:ELF 64 位 LSB 共享对象,x86-64, 版本 1 (SYSV),动态链接,未剥离

- JDK 版本:

java version "1.7.0_75"
Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)

- Ubuntu:

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.2 LTS
Release:    14.04
Codename:   trusty

我将库目录添加到 ldconfig 缓存

你能帮帮我吗?

最佳答案

我遇到这个问题是因为我的共享库依赖于另一个工作不正常的共享库。

关于java - 加载共享库时出错;无法打开共享对象文件 : No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29418629/

相关文章:

python - 如何在 Ubuntu 20.04 LTS 中将默认 python3 设置为 python 3.9 而不是 python 3.8

java - C++ 应用程序可以使用 JNI 加载 .jar 文件吗?

java - 如何在C代码中回调java方法(而不是c中的jni方法)?

java - Result 类型的方法 raw() 已弃用

java - 如何从 Java keystore 创建 PFX 文件?

java - Libgdx gl10.glLineWidth()

java - Eclipse:无法解析 'System'

linux - 在 VM 上设置 2 节点 Hadoop 集群

ubuntu - Supervisor 不会在 Ubuntu 16.04 上启动时启动

java - 创建新对象时出现 JNI 段错误