[英]Why jni not loading after changing package name
嗨,我需要一些幫助。 問題是更改軟件包名稱后,我的jni
沒有加載。 在工作之前很酷。 我試圖解決它,但我不能。 所以請幫幫我。
這是錯誤:
JNI檢測到應用程序中的錯誤:在從java.lang.String java.lang.Runtime.nativeLoad(java.lang.String,java.lang.ClassLoader,java。 lang.String)
JNI檢測到應用程序錯誤:在從java.lang.String java.lang.Runtime.nativeLoad(java.lang.String,java.lang.ClassLoader,java.com到NewGlobalRef的調用中,調用了JNI NewGlobalRef並帶有未決異常'java.lang.ClassNotFoundException' .lang.String)
調用NewGlobalRef時,您有一個待處理的異常。 當執行JNI代碼時發生異常時,您的應用不會崩潰,但會創建一個“待處理的異常”。 您有責任在執行JNI工作時檢查可能引發異常的異常。
在創建掛起的異常后,只有少數JNI方法可以安全調用( 此處提到)。
在您的情況下,您的應用程序崩潰是因為在引發未決異常后調用NewGlobalRef
之前。 NewGlobalRef
不在異常發生后可以安全調用的方法列表中。 但是,您還會看到未決異常的原因: java.lang.ClassNotFoundException
。
這很可能是由於您嘗試執行類似操作而發生的:
cls = (*env)->FindClass(env, "com/example/ndktest/SomeClass");
但隨后您將SomeClass
的程序包名稱從com.example.ndktest.SomeClass
更改為com.other.package.SomeClass
。 但是,您可能也沒有更改搜索類的方式。因此您還需要將FindClass(...)
調用更新為:
cls = (*env)->FindClass(env, "com/other/package/SomeClass");
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.