我一直在接收这个错误,我的JNI代码,而我试图找到方法,使用GetMethodID,我的Java方法是在一个接口。JNI方法没有找到
这里是我的接口
public interface printReader
{
public printImg readerPrint(String selectedName) throws Exception;
}
本地代码
WprintImgIMPL.h
class WprintImgIMPL: public IWprintReader {
public:
WprintImgIMPL(JNIEnv *env, jobject obj);
~WprintImgIMPL(void);
virtual WprintImg readerPrint(char* readerName) ;
.....
.....
private:
JNIEnv *m_Env;
jobject m_jObj;
}
WprintImgIMPL.cpp
WprintImg WprintImgIMPL::readerPrint(char* readerName) {
jclass cls = m_Env->GetObjectClass (m_jObj);
jmethodID mid = m_Env->GetMethodID (cls, "readerPrint", "(Ljava/lang/String;)Lcom/site/name/printImg;");
.......
.......
}
Java代码
public class printReaderIMPL implements printReader {
static final String DEBUG_TAG = "";
android.net.wifi.WifiManager.MulticastLock lock;
Context _context;
public printReaderIMPL (Context context) {
_context = context;
}
@Override
public printImg readerPrint(String selectedName) throws Exception {
Log.e(DEBUG_TAG, "readerPrint");
}
}
构造函数/析构函数
WprintImgIMPL(JNIEnv *env, jobject obj){
m_Env = env;
m_jobj = env->NewGlobalRef(obj);
}
~WprintImgIMPL(void) {
m_Env->DeleteGlobalRef(m_jobj);
}
Error: GetMethodID: method not found: Lcom/site/name/NativeCode;.printImg:(Ljava/lang/String;)Lcom/site/name/printImg;
在使用Javap工具再次生成失败后,签名会被检查两次。
谢谢你,如果你可以输入/评论,并帮助修复这个错误。
.h文件中的声明是什么样的?和.c文件?他们是否同意? – EJP
请参阅问题反馈我也添加了本机代码。 –
是的,他们很好地同意代码编译/链接,但无法找到它在GetMethodID崩溃的方法。 –