使用JNI在native內調用java方法時,需要知道java方法的方法簽名,利用javap工具可以方便的生成簽名。由于java方法簽名在jni層的表示方法的復雜性,利用這個工具生成簽名信息可以避免人工分析帶來的錯誤。
如:
?1?package?com.demo;
?2?
?3?public?class?SigTest?{
?4?
?5?????public?static?final?String?name?=?null;
?6?
?7?????public?int?getName(int[]?data,long?index)?{
?8?????????return?0;
?9?????}
10?}
11?
[calvin@calvin-desktop /tmp 15:59:50 ]
$ javac SigTest.java
[calvin@calvin-desktop /tmp 15:59:57 ]
$ javap -s -p -classpath .
SigTestCompiled from "SigTest.java"
public class com.demo.SigTest extends java.lang.Object{
public static final java.lang.String name;
? Signature: Ljava/lang/String;
public com.demo.SigTest();
? Signature: ()V
public int getName(int[], long);
? Signature: ([IJ)I
static {};
? Signature: ()V
}
-s表示打印簽名信息
-p表示打印所有函數和成員的簽名信息,默認只打印public的簽名信息。
注意:
粗體部分是.class文件的文件名,不要.class后綴,否則提示
ERROR:Could not find SigTest.class.