1、問題:javah or javac -h
在配置好java的環境變量后,java和javac都是可以用的,但是用javah就會出現問題。
會報錯誤
Unable to locate an executable at "/Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home/bin/javah" (-1)
后來就在網上搜了一下jdk-10.0.2發現,這個版本的jdk取消了javah,直接改用javac -h代替了
那我們就可以直接使用javac -h了
2、除了上面的問題,其余過程可參考:https://my.oschina.net/gschen/blog/1613890
總結過程:
(1)編寫java文件,定義native方法,加載步驟4生成的jni動態鏈接庫;
(2)javac編譯java文件為class文件,javac HelloNative.java -h . 編譯出c頭文件,頭文件里面聲明了native方法;
(3)根據頭文件,新建c文件,通過c語言實現native方法;
(4)使用gcc將c文件編譯成動態鏈接庫,jni文件:
gcc HelloNative.c -o libHelloNative.jnilib -dynamiclib -I/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/include/ -I/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/include/darwin/
(5)運行java程序:java HelloNative