gpt4 book ai didi

Java不加载依赖库

转载 作者:行者123 更新时间:2023-11-30 16:55:56 26 4
gpt4 key购买 nike

我第一次尝试使用 JNI,但是当我运行 java 程序时,我不断收到 UnsatisfiedLinkError。该错误表明它找不到我的依赖库。我确实看到了问题JNI Hello World Unsatisfied Link Error但他们的建议没有奏效。顺便说一句,我没有 microsoft Visual Studio,而是在 Windows 10 上运行。

我使用以下命令来编译和运行我的程序:

javac HelloWorld.java

javah HelloWorld

gcc -Wl,--add-stdcall-alias -I"C:/Program Files/Java/jdk1.8.0_91/include"-I"C:/Program Files/Java/jdk1.8.0_91/include/win32"-shared -o HelloWorld.dll HelloWorld.c

java -Djava.library.path=。 Hello World

源代码:

Java 源代码 (HelloWorld.java):

public class HelloWorld {
static {
System.loadLibrary("HelloWorld");
}
private static native void sayHello();
public static void main(String[] args) {
sayHello();
}
}

生成的头文件(HelloWorld.h):

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_sayHello
(JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif

C 文件(HelloWorld.c):

#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"

JNIEXPORT void JNICALL Java_HelloWorld_sayHello(JNIEnv *env, jclass cls) {
printf("C says hello!");
}

最佳答案

查看这里的简单 HelloWorld 示例:

https://github.com/mkowsiak/jnicookbook/tree/master/recipes/recipeNo001

(Linux/OSX)。

如果您想使用共享库,请确保 JVM 可以看到它。您可以使用:“-Djava.library.path =”或者您应该确保库位于 LD_LIBRARY_PATH 上。

关于Java不加载依赖库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40119873/

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