Linux,java.lang.UnsatisfiedLinkError:no";图书馆档案;在java.library.path中 我试图运行一个简单的JNI示例,在这里运行一个java应用程序,它通过动态库调用C++函数。
我将发布我使用的以下代码和终端命令 .爪哇 通过终端获取.class和头文件Linux,java.lang.UnsatisfiedLinkError:no";图书馆档案;在java.library.path中 我试图运行一个简单的JNI示例,在这里运行一个java应用程序,它通过动态库调用C++函数。,java,c++,linux,java-native-interface,unsatisfiedlinkerror,Java,C++,Linux,Java Native Interface,Unsatisfiedlinkerror,我将发布我使用的以下代码和终端命令 .爪哇 通过终端获取.class和头文件 javac Lab.java javah -jni Lab hello.cpp文件 #include "Lab.h" #include <stdio.h> #include <iostream> JNIEXPORT void JNICALL Java_Lab_hello(JNIEnv *env,jobject jobj) { cout<<"Hello World"<&
javac Lab.java
javah -jni Lab
hello.cpp文件
#include "Lab.h"
#include <stdio.h>
#include <iostream>
JNIEXPORT void JNICALL Java_Lab_hello(JNIEnv *env,jobject jobj) {
cout<<"Hello World"<<endl;
}
最后运行文件:
java -Djava.library.path=. Lab
然后我得到一个错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no hello in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1865)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at Lab.<clinit>(Lab.java:6)
线程“main”java.lang.UnsatisfiedLinkError中出现异常:java.library.path中没有hello
位于java.lang.ClassLoader.loadLibrary(ClassLoader.java:1865)
位于java.lang.Runtime.loadLibrary0(Runtime.java:870)
位于java.lang.System.loadLibrary(System.java:1122)
在实验室(Lab.java:6)
我知道还有其他帖子也有同样的问题,但不幸的是,这些解决方案都不适合我。
我已经尝试过以下方法:
- 将hello.so文件复制到java lib路径中的“/usr/lib”中,并使用chmod授予其权限李>
- 还可以使用export将hello.so文件路径添加到$LD_LIBRARY_路径李>
- 运行java文件时添加hello.so路径(java-Djava.library.path=“/root/Desktop”Lab)李>
- 使用甚至不起作用的ldconfig
谢谢。又过了一天在堆栈中搜索,找到了我需要的东西。
在Linux上.so lib文件必须具有前缀“lib”。因此,在我的示例中,我的lib文件应命名为libhello.So,而不是hello.So,并且一切正常。Hi,您是否尝试将.So文件复制到与.class相同的目录中?hello,是的,上述所有文件都在同一目录中
java -Djava.library.path=. Lab
Exception in thread "main" java.lang.UnsatisfiedLinkError: no hello in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1865)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at Lab.<clinit>(Lab.java:6)