最近项目中需要用到JNI来进行java和c++之间的交互,去命令行调用javah.exe命令生成jni头文件的方法比较麻烦,可以通过配置Eclipse来解决这个问题,配置方法如下:
1、首先确保你的环境配置没有问题(我想既然都开始用JNI了因该不会有问题吧!)
2、打开如下按钮 external tools configurations…
3、选中program,然后点击上面的带有+号的文档,新建一个项目
4、设置项目名和一些相关配置信息。
Name设置:随便起我这里起的是javaH
Main设置:
Location 点击Browse File System 设置
Working Directory 点击variables…选择 project_loc,然后加上\src
Arguments: 直接复制粘贴
-classpath .;./classes -d "${project_loc}/jni" -jni ${java_type_name}
Refresh设置:参考下图
Common设置:参考下图
点击下apply。
5、编写测试代码
package jni.exercise;
public class test {
public native int add(int a,int b);
public native int compare(int a,int b);
public static void main(String[] args) {
// TODO Auto-generated method stub
}
/* static {
System.loadLibrary("TestJNI");
}*/
}
目录结果如下:
选中test.java 点击 编译
就能生成头文件了
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class jni_exercise_test */
#ifndef _Included_jni_exercise_test
#define _Included_jni_exercise_test
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: jni_exercise_test
* Method: add
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_jni_exercise_test_add
(JNIEnv *, jobject, jint, jint);
/*
* Class: jni_exercise_test
* Method: compare
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_jni_exercise_test_compare
(JNIEnv *, jobject, jint, jint);
#ifdef __cplusplus
}
#endif
#endif
ok 到这里就结束了。
参考文献:
http://blog.csdn.net/mirkerson/article/details/17187109
http://blog.csdn.net/ling1874/article/details/20358041
http://www.oschina.net/question/1402563_133543