android中JNI的調用生成頭文件步驟

android 中通過JNI調用本地方法步驟介紹:首先是在eclipse中生成類文件

package Pag;

public class JNI {

	static{
		System.loadLibrary("hello");
	}
	public native void  printHello();
	public static void main(String[] args) {
		new JNI().printHello();
	}

}

上面的例子是java簡單的調用native方法。可以通過javac生成.class文件

第一種方法是進入相應生成的生成.class包目錄(註意是包含.class的包目錄,並不是.class目錄)。

例如:

C:\Users\Administrator>d:

D:\>cd workspace\JNIText\bin\Pag
D:\workspace\JNIText\bin\Pag>javah JNI
錯誤:無法訪問 JNI
錯誤的類文件: .\JNI.class
類文件包含錯誤的類: Pag.JNI
請刪除該文件或確保該文件位於正確的類路徑子目錄中。
com.sun.tools.javac.util.Abort
at com.sun.tools.javac.comp.Check.completionError(Check.java:164)
at com.sun.tools.javadoc.DocEnv.loadClass(DocEnv.java:149)
at com.sun.tools.javadoc.RootDocImpl.(RootDocImpl.java:77)
at com.sun.tools.javadoc.JavadocTool.getRootDocImpl(JavadocTool.java:159
)
at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:330)
at com.sun.tools.javadoc.Start.begin(Start.java:128)
at com.sun.tools.javadoc.Main.execute(Main.java:66)
at com.sun.tools.javah.Main.main(Main.java:147)
javadoc: 錯誤 – 致命錯誤
2 錯誤

上邊的提示是進入瞭.class 目錄中,並不是包目錄。接下來返回到上一個目錄中,也就是說的包目錄(D:\workspace\JNIText\bin),通過javah Pag.JNI編譯.h頭文件,將會在bin中生成

D:\workspace\JNIText\bin\Pag>
D:\workspace\JNIText\bin\Pag>cd ..

D:\workspace\JNIText\bin>javah Pag.JNI

bin中有類包Pag,也就是說包路徑。通過javah命令實現

第二種方法的命令是C:\Users\Administrator>javah -classpath D:\workspace\JNIText\bin -jni Pag.JNI (直接進入cmd)中javah -classpath -jni 。

經過實驗測試C:\Users\Administrator>javah -classpath D:\workspace\JNIText\bin -jni Pag.JNI中,-jni可以省略不寫,但是-classpath 不能省略,否則報

javadoc: 錯誤 – 非法的軟件包名稱:”D:\workspace\JNIText\bin”的錯誤。

隨後通過C\C++編程工具實現其頭文件的方法,生成dll。

轉載註明出處https://write.blog.csdn.net/postedit

發佈留言