一、問題:javah or javac -hjava
在配置好java的環境變量後,java和javac都是能夠用的,可是用javah就會出現問題。spa
會報錯誤.net
Unable to locate an executable at "/Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home/bin/javah" (-1)
blog
後來就在網上搜了一下jdk-10.0.2發現,這個版本的jdk取消了javah,直接改用javac -h代替了get
那咱們就能夠直接使用javac -h了編譯
二、除了上面的問題,其他過程可參考:https://my.oschina.net/gschen/blog/1613890table
總結過程:class
(1)編寫java文件,定義native方法,加載步驟4生成的jni動態連接庫;變量
(2)javac編譯java文件爲class文件,javac HelloNative.java -h . 編譯出c頭文件,頭文件裏面聲明瞭native方法;cli
(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