我一直在接收這個錯誤,我的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崩潰的方法。 –