gpt4 book ai didi

java - 在 java.library.path 中找不到库

转载 作者:行者123 更新时间:2023-11-30 08:24:32 25 4
gpt4 key购买 nike

我是 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 的实际目录,但它仍然给我同样的错误!

最佳答案

你的图书馆叫什么?如果您的路径正确,则您的库名称可能是错误的。如果您正在加载的库名为 hello,在 Windows 上,该文件需要称为 hello.dll,在其他所有 SO 上,您还需要在 lib 前面添加 前缀:

  • 在 OS X(Java < 1.7)上 libhello.jnilib
  • 在 OS X 上(Java >= 1.7)libhello.dylib
  • 几乎所有其他内容都是 libhello.so

请注意,Windows dll 文件是唯一没有“lib”前缀的文件名,并且在调用 System.loadLibrary("hello") 时不使用“lib”前缀。如果加载库时仍然遇到问题,请尝试 System.load("/path/to/my/libhello.so") 尝试直接加载库。

您始终可以通过运行来检查系统将查找的文件

System.mapLibraryName(libName)

关于java - 在 java.library.path 中找不到库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22887779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com