生成class关于使用javah生成头文件时无法访问class文件的问题
时间紧张,先记一笔,后续优化与完善。
当生成java类,并且应用javac编译以后,生活JniDemo.class文件。比如此时地点的路径是XXX/src/com/example/hellojni。你的class文件就在这个hellojni文件夹里面,此时如果你直接在这个目录下应用javah命令,则会出现如下错误:
错误: 无法访问 com.example.hellojni.JniDemo
找不到文件com.example.hellojni.JniDemo.class
javadoc: 错误 - 找不到类com.example.hellojni.JniDemo。
Error: 未在命令行中指定任何类。请实验应用 -help。
如图所示 :
解决方案 :
此时,你可以返回到src目录,然后再执行javah com.example.hellojni.JniDemo .
如图 :
此时的目录是src,然后执行javah , 注意要加上完全的包名。最后生成了.h文件。
在C文件中实现该头文件中声明的方法,然后写完Android.mk文件。
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hellojni LOCAL_SRC_FILES :=helloJni.c include $(BUILD_SHARED_LIBRARY)
最后到cygwin 命令终端下,切换到项目主目录,比如我们这里是D:\JavaProFor64\HelloWorld,然后执行$ndk/ndk-build 命令即可编译。
最后.so动态库文件会在D:\JavaProFor64\HelloWorld\libs\armeabi中存放。
文章结束给大家分享下程序员的一些笑话语录:
Borland说我很有前途,Sun笑了;Sun说我很有钱,IBM笑了;IBM说我很专业,Sybase笑了;Sybase说我数据库很牛,Oracle笑了;Oracle说我是开放的,Linux笑了;Linux说我要打败Unix,微软笑了;微软说我的系统很稳定,我们都笑了。
---------------------------------
原创文章 By
问题和命令
---------------------------------