Native使用javah生成JNI头文件时错误

2017-06-26  本文已影响64人  Ziv_紫藤花开

javah参数说明

用法:
  javah [options] <classes>
其中, [options] 包括:
  -o <file>                输出文件 (只能使用 -d 或 -o 之一)
  -d <dir>                 输出目录
  -v  -verbose             启用详细输出
  -h  --help  -?           输出帮助信息  
  -version                 输出版本信息
  -jni                     生成 JNI 样式的标头文件 (默认值)
  -force                   始终写入输出文件
  -classpath <path>        从中加载类的路径
  -cp <path>               从中加载类的路径
  -bootclasspath <path>    从中加载引导类的路径
<classes> 是使用其全限定名称指定的
(例如, java.lang.Object)。

注:

  1. 多classpath路径时,使用;分号分割。
  2. 命令使用路径一般为class所在路径,Eclipse项目是在bin目录下,AndroidStudio是在XXXProject\app\build\intermediates\classes\debug路径下

Error 1

Exception in thread "main" java.lang.IllegalArgumentException: Not a valid class name

分析原因:

  1. 类名不不能包含.class扩展名
  2. 执行命令的路径下不包含该class文件
  3. 完整类名内使用.分割,,或者\\都不可以
  4. 如果使用-classpath属性,不能放在类名后面
  5. 路径最好使用双引号包括起来,可省略,但如果路径包含空格,也必须使用双引号包含路径

解决方法:
检查命令是否包含上述错误

Error 2

错误: 无法访问android.support.v7.app.AppCompatActivity
    找不到android.support.v7.app.AppCompatActivity的类文件

分析原因:
找不到android.support.v7.app.AppCompatActivity的类文件

解决方法:
使用classpath参数指定AppCompatActivity的类文件位置

javah -classpath "D:\NVPACK\android-sdk-windows\platforms\android-19\android.jar";"D:\NVPACK\android-sdk-windows\extras\android\support\v4\android-support-v4.jar";"D:\NVPACK\android-sdk-windows\extras\android\support\v7\appcompat\libs\android-support-v7-appcompat.jar";. com.ziv.zvideo.BitmapPlayerActivity

Error 3

错误: 无法访问android.app.Activity
  找不到android.app.Activity的类文件

分析原因:
找不到android.app.Activity的类文件

解决方法一:
切换到源码文件夹 XXXProject/app/src/main/java 中执行
javah com.xxx.XXXActivity

解决方法二:
使用classpath参数指定Activity的类文件位置

javah -classpath "D:\NVPACK\android-sdk-windows\platforms\android-19\android.jar";. com.xxx.XXXActivity

Error 3.1

错误: 找不到类android.graphics.Bitmap。

分析原因:
找不到类android.graphics.Bitmap,Bitmap类在android.jar文件中,所以指定android.jar所在位置即可

解决方法:
使用classpath参数指定Activity的类文件位置

javah -classpath "D:\NVPACK\android-sdk-windows\platforms\android-19\android.jar";. com.xxx.XXXActivity

Error 3.2

错误: 找不到类com.xxx.xxxx。

分析原因:
使用classpath参数后没有包含当前工程class路径

解决方法:
在classpath参数后使用;分隔后加一个.表示包含当前class路径

Error 4

后期遇到更多错误,持续更新

所有问题的万能解决办法

自己写。。。

参考资料:
http://www.jianshu.com/p/3a168c53257c
http://blog.csdn.net/hejinjing_tom_com/article/details/8125648

上一篇下一篇

猜你喜欢

热点阅读