Android JNI中的Bogus方法描述符

时间:2012-09-10 12:46:32

标签: java android java-native-interface native

我在Java中有以下类

package com.artifex.mupdf.data;

public class FzTextSpan {

FzRect bbox;
int len, cap;
FzTextChar[] mFzTextChars;
public FzTextSpan(FzRect bbox, int len, int cap, FzTextChar[] mFzTextChars) {
    super();
    this.bbox = bbox;
    this.len = len;
    this.cap = cap;
    this.mFzTextChars = mFzTextChars;
}
}

我试图使用foll代码

从JNI调用构造函数
jclass         jFzSpanClass;
jmethodID      jFzSpanCtor;

jFzSpanClass = (*env)->FindClass(env, "com/artifex/mupdf/data/FzTextSpan");
if (jFzSpanClass==NULL) return NULL;
jFzSpanCtor =  (*env)->GetMethodID(env, jFzSpanClass, "<init>",
   "(Lcom/artifex/mupdf/data/FzRect;II;[Lcom/artifex/mupdf/data/FzTextChar;)V");

我正在

 Bogus Method Descriptor:        "(Lcom/artifex/mupdf/data/FzRect;II;[Lcom/artifex/mupdf/data/FzTextChar;)V");

2 个答案:

答案 0 :(得分:6)

您的方法签名字符串错误。不要试图猜测:javap -s会告诉你100%的准确性。

答案 1 :(得分:1)

描述符中有一个分号:

"(Lcom/artifex/mupdf/data/FzRect;II;[Lcom/artifex/mupdf/data/FzTextChar;)V"

正确的字符串是:

"(Lcom/artifex/mupdf/data/FzRect;II[Lcom/artifex/mupdf/data/FzTextChar;)V"