簡體   English   中英

為什么更改包名后jni無法加載

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM