我正在尝试查找 java.util.list 的“添加”方法。该方法接受输入和返回值类型如下:
jmethodID addMethodID = (*env)->GetMethodID(env, listClass, "add", "(Ljava/lang/Object)(Ljava/lang/String)Z;");
返回值为 NULL。我哪里错了?输出的布尔规范是错误的还是输入类型?我应该指定我的输入类型吗?如果是这样,怎么做?
我正在尝试查找 java.util.list 的“添加”方法。该方法接受输入和返回值类型如下:
jmethodID addMethodID = (*env)->GetMethodID(env, listClass, "add", "(Ljava/lang/Object)(Ljava/lang/String)Z;");
返回值为 NULL。我哪里错了?输出的布尔规范是错误的还是输入类型?我应该指定我的输入类型吗?如果是这样,怎么做?
java.util.List.add(Object e) 只有一个参数......你有两个列出的(对象和字符串)和一个返回类型。我想你想要: (Ljava/lang/Object;)Z;
看看这个关于 JNI 的页面。
在您的代码中,我认为您的方法签名中缺少一些分号。即:"(Ljava/lang/Object)(Ljava/lang/String)Z;"
应该是"(Ljava/lang/Object;)(Ljava/lang/String;)Z;"
。
您可以考虑使用带有标志的javap-s
来自动生成所需方法的签名。