您的位置:首页 > 编程语言 > Java开发

Java调用Native方法

2012-02-02 12:26 232 查看
一、如何使用
1. 新建Java类
package com.test;

public class Test {
public static native String hello(String str);

static {
System.loadLibrary("Test");
}
}


2. 编译Java程序,生成.class文件
javac Test.java

3. 生成.h文件,运行目录要在com的上一级
javah com.test.Test

4. 创建C++工程,引用生成的.h文件,实现hello函数
JNIEXPORT jstring JNICALL Java_com_oblicore_jni_TestJni_hello(JNIEnv * env, jobject obj, jstring str)
函数的命名规则为Java_<class fully qualifiedname>_<methodname>
前两个参数是必须的

5. 生成的DLL必须和第一步中指定的名字一样,即Test.dll

6. DLL可以放在Java程序同目录下,也可通过java.library.path参数传入,或者放在path环境变量包含的目录中

二、如何转换字符串
1. jstring to std string
const jchar* raw = env->GetStringChars(str, NULL);
if (raw != NULL) {
jsize len = env->GetStringLength(str);
stdString.assign((wchar_t*)raw, len);
env->ReleaseStringChars(str, raw);
}


2. std string to jstring
jstring str = env->NewString((const jchar*)stdString.c_str(), (jsize)stdString.length());

三、如何处理异常
jclass Exception = env->FindClass("java/lang/Exception");
env->ThrowNew(Exception, "Error occurred");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息