0
我正在使用C實現JNI實現,並嘗試使用java/util/Collections
sort
方法對Comparator
進行排序,並對java/lang/List
類型的列表進行排序。要獲得描述符簽名,我主要使用javap
。通過JNI調用Collections.sort
在這種情況下,javap不會顯示排序方法的任何描述符。我得到的是
$ javap -s -p java.util.Collections | grep -i sort
public static <T extends java.lang.Comparable<? super T>> void sort(java.util.List<T>);
public static <T> void sort(java.util.List<T>, java.util.Comparator<? super T>);
...
在JNI代碼,我用
// Get Collections class
jclass collections_clazz = (*(px->env))->FindClass(px->env, "java/util/Collections");
if (!collections_clazz) ...
// Get sort method
jmethodID sort_mid = (*(px->env))->GetStaticMethodID(px->env, collections_clazz,
"sort", "(Ljava/lang/List;Ljava/util/Comparator;)V");
if (!sort_mid) ...
在我的情況sort_mid
是假的(或NULL)。我使用GetStaticMethodID的簽名是一個粗略的猜測。我不得不承認我並不深入Java,但它足以與JNI一起使用。我在這個項目中使用jdk1.8.0_31
。
有人能給我一個提示這是什麼問題嗎?我錯過了什麼?
在此先感謝您的幫助!
'java.util.List' ='爪哇/郎/ List';!) – 2015-02-23 09:13:35
@ PeterLawrey:* Facepalm * ..是的,就是這樣。謝謝!! – 2015-02-23 09:20:21