2013-08-27 91 views
1

C語言創建Java對象我有一個Java類中的Android NDK

class Book{ 
    String bookId; 
    String bookName; 
    public Book(String bookId, String bookName){ 
     this.bookId=bookId; 
     this.bookName=bookName; 
    } 

} 

我想在JNI創建類圖書的對象。

cid = (*env)->GetMethodID(env, bookClass, "<init>", "([Ljava/lang/String;Ljava/lang/String;)V"); 

但問題是無法找到構造函數。如何解決它?什麼是正確的方法簽名?

回答

1

你非常接近 - 在方法簽名中,你的第一個參數被指定爲一個數組,但在Java中它不是一個數組。刪除第一個方括號。

cid = (*env)->GetMethodID(env, bookClass, "<init>", "(Ljava/lang/String;Ljava/lang/String;)V"); 

如果不工作,你應該確認bookClass是有效的(不是NULL)。

+0

奇怪,但它不起作用。 bookClass是有效的,我在獲取方法ID之前做FindClass檢查。 – user1379574

+0

@ user1379574您是否檢查FindClass的結果是否有效?即檢查'bookClass'是否不是NULL? – krsteeve

+0

是的。對不起,它有效!我只是測試了錯誤。一切都很好,謝謝你! – user1379574