注:本文是入门教程,关于环境搭建。常用的Eclipse+CDT或者minGW方法本人试过好多次,都没有成功。因此其他方法可行的同志们,可以当做一种参考,或者有比这个更方便的方法的同学们欢迎提出更好地解决方案。
本人所实习的公司近期派下的任务中有一个是关于JNI的编程,而本人又确实没有涉足过此领域,于是在度娘谷歌里面搜了很多搭建JNI编程环境和方法的文章,但是很多都是eclipse+minGW的,而单用MinGW的话非常麻烦,而且在命令行下(很显然windows的命令行完全没有Linux下的好用)特别麻烦,而且虽然说用VS也可以做,但是就VS的那个体积安装完也就够V5的了,而且占用资源大,对于我的这么点2G内存来说实在是消受不起。搞了近乎半天连HelloWorld都搞不定,这对于初学者来说要崩溃
于是乎,经过一些软件的测试,发现Dev-C++来做JNI开发和学习非常方便,虽然说最新版本是2005年的4.9.9.2版本,已不再更新,但是却是经典的IDE,跟当年VC6.0是同一级别的经典,而且大小非常小只有9M左右。它自带的是minGW编译器,免去了诸多自己配置的问题,对于初学者来说可以避免配置错误导致无法使用minGW的情况,所以在编译的时候会直接把linux的文件也会编译出来,非常方便。下载位置可以自己百度一下。
本文所用到的是eclipse + dev-c++这两款软件,它们的安装配置我就不在这里详述了,非常简单
本文主要讲的是环境的搭建使用方法,所以对于源码的理解请自行找教程
=============================忧桑的分割线==============
先来看eclipse下的HelloWorld代码
1、新建一个JAVA工程,然后新建一个Class叫做HelloWorld:
保存后在项目文件夹(在本机资源管理器打开)的bin目录下就有编译好的class文件
2、用CMD进入该文件夹,输入 javah -jni HelloWorld (当然前提是已经把JAVA的环境变量设置好并把它放到了PATH中),就可以生成需要用到的头文件HelloWorld.h 文件。
3、打开Dev-C++,新建一个工程,选择DLL,语言选择C Project(或者C++都可以,根据需要而定),工程名称一定要跟在JAVA中调用的名称保持一致,也就是HelloWorld
点击OK就会让你选择项目保存位置,这个随意。新建之后在左边的Project视图下会看到HelloWorld工程,并且自动生成两个文件,不用管它,把那两个原文件全部删掉(右击要删除的文件,remove file)
4、把之前生成的HelloWorld.h文件移动到你保存的刚刚新建项目的所在位置(一定要同一目录,否则编译报错),右击Dev C++中HelloWorld项目,选add to project,把移动过来的文件选中,添加进工程
5、(这一步非常重要)在菜单栏中选project->project option->directories标签->include directories标签,在其中添加JDK文件夹下的include和include\win32两个文件夹,如图
这一步经常容易遗忘,一定要注意每新建一个项目都要添加这两个文件夹,否则jni.h是无法识别的
6、新建C源码,HelloWorld.c,
7、保存之后Ctrl+F9进行编译,编译完成之后就会在该项目所在目录下找到需要的HelloWorld.dll动态链接库以及Linux版的.so .o文件。
以下是最重要的几步
8、在最开始建的JAVA项目的文件夹下新建一个目录(比如lib)
9、右击项目->properties->Java BuildPath->Source标签,在点击的JNITest/src会展开下拉列表,选择Native library location并单击右面的Edit
10、选择当前项目(我的是JNITest)下的lib目录,一路OK下来回到Eclipse主界面,运行HelloWorld就会在下面的控制台下面看到输出结果了。
到此,整个Windows下的JNI环境算是搭建好了
========================蛋疼的分割线========================
牧之推荐:网络上关于JNI的教程非常之多,但是本人发现岂是SUN提供的官方JNI教程是最最好用最最通俗易懂最最全面系统的教程(当然,前提是能对E文不过敏)。
下载地址:http://java.sun.com/docs/books/jni/download/jni.pdf
JNI真的是好东西,不仅可以大大提高软件执行效率,你不了JAVA的一些不足,而且对于某些只能用C/C++的场合提供了非常方便的方法。