Java 如何使用jvalue数组将两个int传递给构造函数?

Java 如何使用jvalue数组将两个int传递给构造函数?,java,c,java-native-interface,Java,C,Java Native Interface,我试图创建一个对象的实例,该对象的构造函数通过将int作为jvalue数组的成员传入来接受两个int。当我打印构造函数中的参数时,似乎只有第一个参数被正确传递,为什么会这样?下面是我的C和Java代码 C代码 jclass theClass; jmethodID theMethod; theClass = (*env)->FindClass(env, "thepackage/TwoNumbers"); theMethod = (*env)->GetMethodID(env, theC

我试图创建一个对象的实例,该对象的构造函数通过将int作为jvalue数组的成员传入来接受两个int。当我打印构造函数中的参数时,似乎只有第一个参数被正确传递,为什么会这样?下面是我的C和Java代码

C代码

jclass theClass;
jmethodID theMethod;
theClass = (*env)->FindClass(env, "thepackage/TwoNumbers");
theMethod = (*env)->GetMethodID(env, theClass, "<init>", "(II)V");

jvalue args[2];
args[0].i=55;
args[1].i=6;

jobject theObj = (*env)->NewObject(env, theClass, theMethod, *args);

您正在调用函数
NewObject
,该函数接受一个可变长度的参数列表。要使用jvalue参数版本,必须调用
NewObjectA

jobject theObj=(*env)->NewObjectA(env,theClass,theMethod,*args);

jobject theObj=(*env)->NewObjectA(env,theClass,theMethod,*args);