MacO上带有JNI的线程“ main”中的java.lang.UnsatisfiedLinkError异常

时间:2018-10-05 13:28:05

标签: java java-native-interface jnienv

我试图学习JNI,但在第一个程序中,我写了它,在运行编译的Java程序时给出了以下异常。

   Exception in thread "main" java.lang.UnsatisfiedLinkError: no prtmsg in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at MyMain.<clinit>(main.java:5)

这是我的目录文件列表 Screenshot of direcotry

这是Java文件

class MyMain{

    public native void printmsg();
    static{
        System.loadLibrary("prtmsg");
    }

    public static void main(String[] args){
        MyMain mm = new MyMain();
        mm.printmsg();
    }
}

请帮助我解决此问题。在此先感谢:)

1 个答案:

答案 0 :(得分:0)

在使用MacOS编译c代码时,我找到了答案,我们必须使用以下命令:

gcc -shared -o libLibraryName.dylib CProgramName.c -fPIC

这里是编译后的代码的名称,应该在开头,.dylib和末尾附加lib。

在Java中加载时

 static{
        System.loadLibrary("LibraryName");
    }

不使用libLibraryName.dylib即可使用LibraryName。提取lib和.dylib!