【发布时间】:2014-05-18 05:48:01
【问题描述】:
我是 JNI 的新手,所以我之前尝试过这个 JNI 入门教程,它只是调用 native 来打印 Hello World!一切都很顺利,直到我想运行 java 文件时,我一直收到错误:线程“main”中的异常:java.lang.UnsatisfiedLinkError:在 java.library.path 中找不到 hello 库。我已经用谷歌搜索了错误并查看了很多人的建议,但不幸的是,没有一个对我有用!我尝试了以下方法:
- 使用命令运行:java -Djava.library.path = "库路径" HelloWorld
- 将 LD_LIBRARY_PATH 设置为我的 .so 路径
其他人在做了上述两个之一后都解决了他们的问题,但我没有!
这里是 Java 代码:
public class HelloWorld {
static {
System.loadLibrary("hello");
}
private native void printHelloWorld();
public static void main(String[] args) {
new HelloWorld().printHelloWorld();
}
}
native 的代码如下:
void JNICALL Java_printHelloWorld(JNIEnv *env, jobject obj) {
printf("HelloWorld!");
}
编辑:我什至尝试将库复制到 java.library.path 的实际目录,但它仍然给我同样的错误!
【问题讨论】:
-
请展示您的完整代码,包括原生部分和 Java 部分。
-
java.library.path 和 LD_LIBRARY_PATH 必须指向包含 .so 文件的目录,而不是文件本身。
-
对我来说,当路径包含 64 位库时,32 位 jvm 会给出相同的消息...
标签: java java-native-interface