1

私は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;
}
}

次のコードを使用して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");
4

2 に答える 2

6

メソッドの署名文字列が間違っています。これらを推測しようとしないでください:javap -s100%の精度で教えてくれます。

于 2012-09-10T17:45:40.850 に答える
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"
于 2012-09-10T13:24:25.397 に答える