在JNI开发中,首先要将建立的anroid类编译成.h文件,编译用到命令javah,由于第一次用,以前对java的编译过程也不怎么了解,所以走了好多弯路,网络没有对这一步的详细介绍,这里讲一下:

通过DOS命令执行,(1)开始-》运行-》cmd->进入dos命令操作界面

在命令行中输入javah -classpath bin\classes -d jni com.sirc.jni.HelloWorld

通过输入javah 可以看到以下结果:
用法:javah [选项] <类>

其中 [选项] 包括:

-help                 输出此帮助消息并退出 
        -classpath <路径>     用于装入类的路径 
        -bootclasspath <路径> 用于装入引导类的路径 
        -d <目录>             输出目录 
        -o <文件>             输出文件(只能使用 -d 或 -o 中的一个) 
        -jni                  生成 JNI样式的头文件(默认) 
        -version              输出版本信息 
        -verbose              启用详细输出 
        -force                始终写入输出文件

这表明:-classpath是用来装入类的路径的,而前面我们已经进入了项的根路径d:\workspace\ar\jnitest目录,所以-classpath只要装载HelloWorld.class类文件的bin\classes目录,-d用来指定输出路径,一般在项目根路径下面新建一个jni文件夹用来存储c文件,所以,-d后面输入jni,最后是报名+类名

执行过后可以在jni文件夹下面看到生产的.h头文件com_sirc_jni_HelloWorld.h,生成成功。

注意:路径一定要对应正确,我刚开始一直录入有问题,不行的话可以直接输入全路径:

javah -classpath D:\workspace\ar\jnitest\bin\classes -d jni com.sirc.jni.HelloWorld

但是我用的时候提示javah不是内部程序或外部程序,原来是环境变量中jdk的参数掉了,重新设置一下

path中添加:C:\Program Files (x86)\Java\jdk1.6.0_18\bin;C:\Program Files (x86)\Java\jre6\bin

classpath新建或添加:C:\Program Files (x86)\Java\jdk1.6.0_18\lib\dt.jar;C:\Program Files (x86)\Java\jdk1.6.0_18\lib\tools.jar

java_home新建:C:\Program Files (x86)\Java\jdk1.6.0_18

转自:http://www.cnblogs.com/gisdream/p/3521090.html

最新文章

  1. 使用Javah 生成C/C++头文件
  2. How do I install Adobe Flash on Debian Wheezy?
  3. 【转载】PMC/PEC Boundary Conditions and Plane Wave Simulation
  4. 使用guava带来的方便
  5. DBA_Oracle日志文件 - altert / trace /audit / redo / archive log(概念)
  6. mysql数据类型——浮点和定点型
  7. Android - Broadcast机制
  8. C# 数据的序列化存取
  9. PhpStorm 10.0 激活方式
  10. [week2]每周总结与工作计划
  11. spring4新特性-泛型依赖注入
  12. odoo8 和odoo10区别
  13. Ambari 使用 Hive View 异常处理
  14. JMeter实现登录初始化(类似LR的init函数功能实现)
  15. 做生活的有心人——xxx系统第一阶段总结
  16. OGG实现两台Oracle数据库的同步
  17. jenkins之从0到1利用Git和Ant插件打war包并自动部署到tomcat(第一话):初次启动jenkins,输入给定密码后登录失败问题解决
  18. NET设计模式 第二部分 结构性模式(9):装饰模式(Decorator Pattern)
  19. eigen安装
  20. Python学习---列表/元组/字典/字符串/set集合/深浅拷贝1207【all】

热门文章

  1. C++实现双缓冲
  2. Unity3d 查找所选的是否引用过某资源
  3. 解读Unity中的CG编写Shader系列二
  4. Java类变量、实例变量的初始化顺序
  5. Effective C++ -----条款07:为多态基类声明virtual析构函数
  6. oracle触发器加条件判断、dblink
  7. Java实现注册邮箱激活验证
  8. windows服务
  9. mybatis 的if else
  10. IOS - socket 编程初体验