首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JNI: NoSuchFieldError

JNI: NoSuchFieldError
EN

Stack Overflow用户
提问于 2009-12-08 08:32:02
回答 1查看 3K关注 0票数 1

输出: javap -s SomeClass

代码语言:javascript
复制
public org.someapp.SomeClass$_data data;
  Signature: Lorg/someapp/SomeClass$_data;

Java中SomeClass的定义:

代码语言:javascript
复制
class SomeClass
{
    private class _data {
        byte[] something = new byte[1234];
    }

    public _data data;
}

Java中原生函数的定义:

代码语言:javascript
复制
public static native int NativeFunction(SomeClass something);

Java实现:

代码语言:javascript
复制
SomeClass x = new SomeClass();
NativeInterface.NativeFunction(x);

但是,当执行以下代码时:

代码语言:javascript
复制
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")就可以了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-08 10:18:44

我有一种感觉,"Lorg/someapp/SomeClass$_data"应该是"Lorg/someapp/SomeClass$_data;"。请注意分号。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1863818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档