异常信息:
提示找不到某个类(要进行编译的类)
产生异常的开发环境:
jdk7.0
ndk版本:
android-ndk-r7b
解决方案:
在环境变量classpath中添加android.jar这个文件的目录
如:E:\eclipse\android-sdks\platforms\android-8\android.jar
问题描述:
刚开始研究JNI,然后让这个问题折腾了一上午,使用javah来生成java的class文件没问题,但是生成包含android特有的类库的class文件就出错,说是找不到某个类(我的是找不到Activity这个类),然后配置好环境变量之后,问题解决。之前的JNI开发,不需要配置这个环境变量,应该是新版本才出现的问题。
javah命令简单介绍
F:\workspace\Jni\bin\classes>javah com.example.jni.MainActivity
javah命令主要用于jni编程中,生成本地类方法的头文件
在上面的语句中,我们定位到classes文件夹,这个文件夹用于存放编译好的class文件,然后我们把输入<package>+类名就可以生成相应类的native方法的头文件声明。要注意的是,这样生成的.h文件是和classes文件夹的子目录下。
我们在进行JNI编程的时候,一般在项目的根目录下面建立一个jni的文件夹,用于存放我们的c文件,h文件以及mk文件,那么如果我们想生成的h文件直接在jni文件夹下面,应该怎么操作呢?
我们使用下面的命令即可
F:\workspace\Jni\bin\classes>javah -d ../../jni com.example.jni.MainActivity
和第一条指令相比,多了-d ../../jni,-d的意思是创建一个文件夹,而../../jni的意思就是在当前目录的父目录的父目录下面创建一个jni文件夹,而classes的父目录的父目录就是项目的根目录,所以这样就可以直接在我们的jni文件夹下面生成我们需要的h文件
【JNI编程】使用javah命令生成头文件报错的解决方案