2015-04-02 994 views
4

我从加载Java类的共享库(JNI)时,在Ubuntu系统操作加载共享库时出错;无法打开共享对象文件:没有这样的文件或目录

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) 

问题 - Test.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 /环境中

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

你能帮助我吗?

回答

1

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

相关问题