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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,919评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,810评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,118评论 6 342
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 7,607评论 0 11
  • 我在初中二年级的时候,班里四十多名同学走了近一半,我说的走了是指他们辍学了,去上技校了。无独有偶,其他班都是这种...
    心随明媚阅读 3,233评论 0 0

友情链接更多精彩内容