JNI UnsatisfiedLink 错误
JNI UnsatisfiedLink Error
所以我是 JNI 的新手,我正在关注一个简单的 hello word 示例,但我不断收到错误 UnsatisfiedLinkError
。我究竟做错了什么?这是我的 .h 文件:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class JNITEST_jnihellonative */
#ifndef _Included_JNITEST_jnihellonative
#define _Included_JNITEST_jnihellonative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: JNITEST_jnihellonative
* Method: hellofromc
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_JNITEST_jnihellonative_hellofromc(JNIEnv *,jobject);
#ifdef __cplusplus
}
#endif
#endif
.c 文件
#include <jni.h>
#include<stdio.h>
#include<windows.h>
#include "jnihellonative.h"
JNIEXPORT void JNICALL
Java_JNITESTS_jnihellonative_hellofromc(JNIEnv *env, jobject obj){
printf("Hello World");
return;
}
java主要class
package JNITEST;
public class Jnihello {
public static void main(String[] args) {
jnihellonative jniprint = new jnihellonative();
jniprint.hellofromc();
}
}
java class
package JNITEST;
public class jnihellonative {
public native void hellofromc();
static{
System.load("C:\Users\Kevin\Documents\NetBeansProjects\JniHelloTest.dll");
}
}
我一直收到这个错误
Exception in thread "main" java.lang.UnsatisfiedLinkError: JNITEST.jnihellonative.hellofromc()V
at JNITEST.jnihellonative.hellofromc(Native Method)
at JNITEST.Jnihello.main(Jnihello.java:19)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
我试过使用 System.load() 和 System.loadLibrary() 但我得到同样的错误。
自从生成 .h 文件并写入 .c 文件后,您已经更改了 class 的名称。 .h 文件有 jnihellonative
,你的 Java 代码有 Jnihello
.
I have tried using System.load() and System.loadLibrary()
无关紧要。您没有从其中任何一个中获得异常,而是在调用本机方法时获得它。
所以我是 JNI 的新手,我正在关注一个简单的 hello word 示例,但我不断收到错误 UnsatisfiedLinkError
。我究竟做错了什么?这是我的 .h 文件:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class JNITEST_jnihellonative */
#ifndef _Included_JNITEST_jnihellonative
#define _Included_JNITEST_jnihellonative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: JNITEST_jnihellonative
* Method: hellofromc
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_JNITEST_jnihellonative_hellofromc(JNIEnv *,jobject);
#ifdef __cplusplus
}
#endif
#endif
.c 文件
#include <jni.h>
#include<stdio.h>
#include<windows.h>
#include "jnihellonative.h"
JNIEXPORT void JNICALL
Java_JNITESTS_jnihellonative_hellofromc(JNIEnv *env, jobject obj){
printf("Hello World");
return;
}
java主要class
package JNITEST;
public class Jnihello {
public static void main(String[] args) {
jnihellonative jniprint = new jnihellonative();
jniprint.hellofromc();
}
}
java class
package JNITEST;
public class jnihellonative {
public native void hellofromc();
static{
System.load("C:\Users\Kevin\Documents\NetBeansProjects\JniHelloTest.dll");
}
}
我一直收到这个错误
Exception in thread "main" java.lang.UnsatisfiedLinkError: JNITEST.jnihellonative.hellofromc()V
at JNITEST.jnihellonative.hellofromc(Native Method)
at JNITEST.Jnihello.main(Jnihello.java:19)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
我试过使用 System.load() 和 System.loadLibrary() 但我得到同样的错误。
自从生成 .h 文件并写入 .c 文件后,您已经更改了 class 的名称。 .h 文件有 jnihellonative
,你的 Java 代码有 Jnihello
.
I have tried using System.load() and System.loadLibrary()
无关紧要。您没有从其中任何一个中获得异常,而是在调用本机方法时获得它。