## Javah 常見錯誤記錄-NDK與JNI除錯
測試文件:hello-jni/src/com/example/hellojni/HelloJni.java
~~~
/**?
?*?該文件來自?Android?NDK?Sample?-?HelloJni,?為了便于說明問題,我作了一些修改。?
?*/??
package?com.example.hellojni;??
??
public?class?HelloJni??
{??
????public?native?String??stringFromJNI();??
??
????public?native?String??unimplementedStringFromJNI();??
??
????static?{??
????????System.loadLibrary("hello-jni");??
????}??
}??
~~~
錯誤一
~~~
david@xmomx:hellojni$?javac?HelloJni.java???
david@xmomx:hellojni$?ls??
Hello.class??Hello.h??Hello.java??HelloJni.class??HelloJni.java??
david@xmomx:hellojni$?javah?-jni?HelloJni??
error:?cannot?access?HelloJni??
bad?class?file:?./HelloJni.class??
class?file?contains?wrong?class:?com.example.hellojni.HelloJni??
Please?remove?or?make?sure?it?appears?in?the?correct?subdirectory?of?the?classpath.??
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:?error?-?fatal?error??
2?errors??
~~~
錯誤原因,沒有在正確的路徑下執行 javah 命令,應該在源碼根目錄下執行。
錯誤二:
~~~
david@xmomx:hellojni$?cd?../../../??
david@xmomx:src$?ls??
com??
david@xmomx:src$?javah?-jni?HelloJni??
error:?cannot?access?HelloJni??
class?file?for?HelloJni?not?found??
javadoc:?error?-?Class?HelloJni?not?found.??
Error:?No?classes?were?specified?on?the?command?line.??Try?-help.??
~~~
錯誤原因:Classes 參數要使用完整類名,也就是說要加上包名
錯誤四:
~~~
david@xmomx:src$?javah?-jni?com/example/hellojni/HelloJni??
javadoc:?error?-?Illegal?package?name:?"com/example/hellojni/HelloJni"??
1?error??
~~~
錯誤原因:完整類名格式錯誤
~~~
david@xmomx:src$?javah?-jni?com.example.hellojni.HelloJni??
~~~
OK,編譯通過。
如果還有錯誤,說是類找不到還是什么的,請嘗試添加 -classpath . 參數。如下:
~~~
david@xmomx:src$?javah?-jni?-classpath?.?com.example.hellojni.HelloJni ?
~~~
- 前言
- Android問題集錦轉載之一
- Android問題集錦之一
- Android問題集錦之二
- Android問題集錦之三
- Android問題集錦轉載之二
- Android問題集錦轉載之三
- Android問題集錦之四
- Android問題集錦轉載之四
- Android問題集錦轉載之五
- Android問題集錦之六
- Android問題集錦之七
- Android問題集錦之八
- Android問題集錦之九
- Android問題集錦之十
- Android問題集錦之十一
- android問題集錦之十二
- Android問題集錦轉載之六
- Android問題集錦之十三
- Android問題集錦之十四
- Android問題集錦轉載之七
- Android問題集錦之十五
- Android問題集錦轉載之八
- Android問題集錦之十六
- Android問題集錦之十七
- android問題集錦之十八
- Android環境問題集錦之十九
- Android問題集錦之二十
- Android問題集錦之二十一
- Android問題集錦之二十二
- Android問題集錦之二十三
- Android問題集錦之二十四
- Android問題集錦之二十五
- Android問題集錦之二十六
- Android問題集錦之二十七
- Android問題集錦之二十八
- Android問題集錦之二十九
- Android問題集錦之三十
- Android問題集錦之三十一
- Android問題集錦之三十二
- Android問題集錦之三十三
- Android問題集錦之三十四
- Android問題集錦之三十五
- Android問題集錦之三十六
- Android問題集錦之三十七
- Android問題集錦之三十八
- Android問題集錦之三十九
- Android問題集錦之四十
- Android問題集錦之四十一
- Android問題集錦之四十二
- Android問題集錦之四十三
- Android問題集錦之四十四
- Android問題集錦之四十五
- Android問題集錦之四十六