javah命令生成头文件的方法、常见错误解析

背景:

我在做一个android手机软件的项目,想要从java代码中调用Native代码,即使用so文件中的函数。

已经安装好了NDK。

android sdk 包目录:D:\Program Files\android-sdk-windows\sdk\platforms\android-18\android.jar



当前工程class文件目录:E:\jlh\wordsapce-android\SQLite_test\bin|classes


按照如下操作步骤记录了生成头文件遇到的问题和解决方法。

第一步:

在MainActivity类中加入如下代码片段

public static native String strFromJNI();
static{
	System.loadLibrary("MyFirstJNI");
}
来调用MyFirstJNI.so文件


第二步:

保存之前的java文件,打开cmd,进入E:\jlh\wordsapce-android\SQLite_test\bin|classes目录,



第三步:

遇到上图问题,遂查看javah的用法,如下图



如上图所示,现在我只指定了-jni生成默认样式头标头文件,和给出了<包名.类名>的全限定名称。

“无法访问android.app.Activity”是指找不到android.jar包所在目录。

所以需要添加-classpath指定加载类的路径。

注意:

这里已经进入了E:\jlh\workspace-android\SQLite_test\bin\classes文件路径,

不必进入E:\jlh\workspace-android\SQLite_test\bin\classes\com\example\sqlite_test文件路径。

所以“.”表示当前classes文件路径。

android.jar包路径在:D:\Program Files\android-sdk-windows\sdk\platforms\android-18\android.jar

调用-classpath设置这两个路径,由于带空格的路径需要用双引号引起来,两个路径用分号隔开。

如下图所示



这样就在bin\classes\目录下生成了对应的头文件。



其他异常错误可以参考这片博文:

http://blog.csdn.net/hejinjing_tom_com/article/details/8125648

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值