1
我想從jni c代碼發送一個整數值到一個java函數。但是當我嘗試這樣做時,JVM崩潰了。我不知道原因。以下代碼告訴我如何一直試圖實現這一點。JVM崩潰,因爲我嘗試發送一個整數值到一個Java函數
Java代碼:
class Tester {
public native void func();
public native void func_1(Tester T);
public native void func_2(String S);
public static void main(String args[]) {
Tester tester = new Tester();
tester.func();
}
public void printInteger(int x) {
System.out.println(x);
}
static {
System.loadLibrary("DailyTesters");
}
}
JNI的C代碼:
#include <stdio.h>
#include "Tester.h"
void Java_Tester_func
(JNIEnv *env, jobject obj) {
jclass cls = (*env)->GetObjectClass(env,obj);
jmethodID mid = (*env)->GetMethodID(env,cls,"printInteger","(I)V");
jvalue *a1;
a1->i = 2;
(*env)->CallVoidMethodA(env,obj,mid,a1);
}
我已做了哪些錯誤?
A1是未分配的指針。 – auselen