我试图学习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();
}
}
请帮助我解决此问题。在此先感谢:)
答案 0 :(得分:0)
在使用MacOS编译c代码时,我找到了答案,我们必须使用以下命令:
gcc -shared -o libLibraryName.dylib CProgramName.c -fPIC
这里是编译后的代码的名称,应该在开头,.dylib和末尾附加lib。
在Java中加载时
static{
System.loadLibrary("LibraryName");
}
不使用libLibraryName.dylib即可使用LibraryName。提取lib和.dylib!