在 MacO 上使用 JNI 的线程 "main" java.lang.UnsatisfiedLinkError 中出现异常
Exception in thread "main" java.lang.UnsatisfiedLinkError with JNI on MacOs
我正在尝试了解 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();
}
}
请帮我解决这个问题。提前致谢:)
我在使用 MacOS 编译 c 代码时找到了答案,我们必须使用以下命令:
gcc -shared -o libLibraryName.dylib CProgramName.c -fPIC
此处作为编译代码的名称,它应该在开头附加 lib 并在结尾附加 .dylib。
在 java 加载时
static{
System.loadLibrary("LibraryName");
}
不使用 libLibraryName.dylib 只需使用 LibraryName。提取 lib 和 .dylib !
我正在尝试了解 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();
}
}
请帮我解决这个问题。提前致谢:)
我在使用 MacOS 编译 c 代码时找到了答案,我们必须使用以下命令:
gcc -shared -o libLibraryName.dylib CProgramName.c -fPIC
此处作为编译代码的名称,它应该在开头附加 lib 并在结尾附加 .dylib。
在 java 加载时
static{
System.loadLibrary("LibraryName");
}
不使用 libLibraryName.dylib 只需使用 LibraryName。提取 lib 和 .dylib !