gpt4 book ai didi

java - JNI : NoSuchFieldError

转载 作者:行者123 更新时间:2023-11-29 07:22:43 32 4
gpt4 key购买 nike

输出:javap -s SomeClass

public org.someapp.SomeClass$_data data;
Signature: Lorg/someapp/SomeClass$_data;

Java中SomeClass的定义:

class SomeClass
{
private class _data {
byte[] something = new byte[1234];
}

public _data data;
}

Java中native函数的定义:

public static native int NativeFunction(SomeClass something);

Java 实现:

SomeClass x = new SomeClass();
NativeInterface.NativeFunction(x);

但是,当执行下面的代码时:

JNIEXPORT jint JNICALL Java_org_someapp_NativeInterface_NativeFunction(JNIEnv* env, jobject obj, jobject someobject) {
jclass some_class = (*env)->GetObjectClass(env, someobject);
jfieldID data = (*env)->GetFieldID(env, some_class, "data", "Lorg/someapp/SomeClass$_data");
}

Java 在 GetFieldID 调用中抛出“NoSuchFieldError;: data”异常。我不明白。签名很好(直接从 javap 复制)。

请注意,为更简单的变量获取字段 ID,例如无符号短整型(带有签名“S”)就可以正常工作。

最佳答案

我觉得 "Lorg/someapp/SomeClass$_data" 应该是 "Lorg/someapp/SomeClass$_data;"。注意分号。

关于java - JNI : NoSuchFieldError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1863818/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com