使用JNI在native內調用java方法時,需要知道java方法的方法簽名,利用javap工具可以方便的生成簽名。由於java方法簽名在jni層的表示方法的複雜性,利用這個工具生成簽名信息可以避免人工分析帶來的錯誤。
如:
package com.demo;
public class SigTest {
public static final String name = null;
public int getName(int[] data,long index) {
return 0;
}
}
[calvin@calvin-desktop /tmp 15:59:50 ]
$ javac SigTest.java
[calvin@calvin-desktop /tmp 15:59:57 ]
$ javap -s -p -classpath . SigTest
Compiled 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.