1、javah编译含包的class
这是从网上摘录的,确实是按照这种方法编译可以的。
用JNI时,需要把class文件编译成.h文件
不带包名的class:在该class文件的同级目录下,键入命令javah XXXX
例如:TestJni.class文件在D:\\java_projects\test\目录下
在命令提示行中,转到该目录下,运行javah TestJni
带包名的class:在该class文件的同级目录下,javah XXXX,会出错,报错信息大致是说无法访问(包名.XXX),解决方法是退回到class文件的上级目录,用命令javah 包名.XXX
例如:TestJni.class的包名为jni,该class文件在D:\\java_projects\test\jni
目 录下,在命令提示行中,转到该目录的上级目录
(D:\\java_projects\test\),运行javah jni.TestJni
不带包名的class:在该class文件的同级目录下,键入命令javah XXXX
例如:TestJni.class文件在D:\\java_projects\test\目录下
在命令提示行中,转到该目录下,运行javah TestJni
带包名的class:在该class文件的同级目录下,javah XXXX,会出错,报错信息大致是说无法访问(包名.XXX),解决方法是退回到class文件的上级目录,用命令javah 包名.XXX
例如:TestJni.class的包名为jni,该class文件在D:\\java_projects\test\jni
目 录下,在命令提示行中,转到该目录的上级目录
(D:\\java_projects\test\),运行javah jni.TestJni
2、dll文件放的位置。
网上有很多放的位置,但我直接就用其中的一种。就是先查看环境变量PATH中java的bin位置,把dll直接放到这个bin目录中就可。这个和具体是什么包没有关系。
如果你直接放到工程文件中,还要查看PATH所注明的java bin目录里面有没有dll文件,不管是eclipse还是网页运行applet都会先找到这个目录然后再去找工程目录。
具体可以查看网上jni dll放的位置。
3、注意内存泄露问题
正在查找中.....