#include <jni.h>
#include <iostream>
JNIEXPORT void JNICALL
Java_YourPackageName_YourClass_createExample(JNIEnv *env, jobject) {
// 查找Example类
jclass cls = env->FindClass("com/example/Example");
if (cls == NULL) {
return; // 类未找到
}
// 获取Example类的构造函数的ID
jmethodID constructorMID = env->GetMethodID(cls, "<init>", "(Ljava/lang/String;)V");
if (constructorMID == NULL) {
return; // 构造函数未找到
}
// 创建字符串对象
jstring message = env->NewStringUTF("Hello from JNI!");
if (message == NULL) {
return; // 字符串创建失败
}
// 使用构造函数ID创建Example类的实例
jobject exampleObj = env->NewObject(cls, constructorMID, message);
if (exampleObj == NULL) {
return; // 对象创建失败
}
// 获取printMessage方法的ID
jmethodID printMID = env->GetMethodID(cls, "printMessage", "()V");
if (printMID == NULL) {
return; // 方法未找到
}
// 调用printMessage方法
env->CallVoidMethod(exampleObj, printMID);
// 释放本地引用
env->DeleteLocalRef(cls);
env->DeleteLocalRef(message);
env->DeleteLocalRef(exampleObj);
}
public class Example {
private String str;
public Example(String ex){
this.str = ex;
}
public void printMessage(String message){
System.out.println(message);
}
}