菜鸟的helloJNI

说明

有一demo的java文件存放路径:/root/workspace_android/javaJNI/src/com/compal/javaJNI

 第一步

进入该路径,执行javac HelloJni.java生成了.class文件

 第二步

   退到/root/workspace_android/javaJNI/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.

第三步

  
 再次进入/root/workspace_android/javaJNI/src/com/compal/javaJNI
  试试执行javah -jni HelloJni依然出错。。。

错误说明

  
 error: cannot access HelloJni
  bad class file: RegularFileObject[./HelloJni.class]
  class file contains wrong class: com.compal.javaJNI.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:180)
        at com.sun.tools.javadoc.DocEnv.loadClass(DocEnv.java:159)
	at com.sun.tools.javadoc.RootDocImpl.<init>(RootDocImpl.java:95)
	at com.sun.tools.javadoc.JavadocTool.getRootDocImpl(JavadocTool.java:188)
	at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:364)
	at com.sun.tools.javadoc.Start.begin(Start.java:162)
	at com.sun.tools.javadoc.Main.execute(Main.java:113)
	at com.sun.tools.javah.Main.main(Main.java:153)
  javadoc: error - fatal error
  2 errors

第四步

  好吧,继续退到/root/workspace_android/javaJNI/src目录下

  执行javah -jni com.compal.javaJNI.HelloJni.这次成功生成了 com.compal.javaJNI.HelloJni.h文件。

第五步

   
下面编辑.c文件。。。偶是直接新建文件,然后写的。不知道有其他什么好办法。。。

第六步

   
好了,还是在这个目录下执行
  gcc -shared -fPIC -I /usr/local/lib/sun_jdk/jdk1.6.0_24/include/ -I /usr/local/lib/sun_jdk/jdk1.6.0_24/include/linux/ 


 com_compal_javaJNI_HelloJni.c -o libcom_compal_javaJNI_HelloJni.so
  /usr/local/lib/sun_jdk/jdk1.6.0_24/这个目录是我安装的java目录
 
 看http://abitno.me/a-simple-tutorial-to-jni这里的解释说/usr/local/lib/sun_jdk/jdk1.6.0_24/include/这里面包含有jni.h文件,
  
而在刚才生成的.c文件中引用了jni.h文件,而/usr/local/lib/sun_jdk/jdk1.6.0_24/include/linux/这是jni.h需要的支持文件。
 
 至此.so文件就生成了。


 

后续

 Android NDK  上自带的JNIdemo。直接进入一个例子如:
 
 /usr/local/lib/android-ndk-r7/samples/hello-jni
  
执行命令ndk-build,就创建好了.so动态库。用eclips导入直接就能在模拟器上运行成功。

   参考:

  
 http://www.cnblogs.com/hibraincol/archive/2011/05/30/2063847.html
  
http://blog.csdn.net/xyz_lmn/article/details/6955031
  
http://abitno.me/a-simple-tutorial-to-jni

 PS:

就这么2篇文,搞了10个小时。不要低估菜鸟的下限啊抓狂

这格式怎么这么难搞啊。。。。文档写少了。菜鸟啥都不会哭

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值