c 语言调用java_java JNI: C 语言调用 Java 方法示例详解

#include

#include

#include

#include /* include the file to support unicode function */

const char*

DispatchStatus(int status)

{

switch (status) {

case JNI_OK:

return \"success\";

break;

case JNI_ERR:

return \"unknown error\";

break;

case JNI_EDETACHED:

return \"thread detached from the VM\";

break;

case JNI_EVERSION:

return \"JNI version error\";

break;

default:

return __FILE__ \": unknow error\";

break;

}

}

void

ArrayTest(JNIEnv* env)

{

int i = 1;

jintArray array = (*env)-> NewIntArray(env, 10);

for(; i<= 10; i++)

(*env)->SetIntArrayRegion(env, array, i-1, 1, &i);

/* 获取数组对象的元素个数 */

int len = (*env)->GetArrayLength(env, array);

/* 获取数组中的所有元素 */

jint* elems = (*env)-> GetIntArrayElements(env, array, 0);

for(i=0; i< len; i++)

printf(\"ELEMENT %d IS %d\\n\", i, elems[i]);

}

int

main(int argc, const char** argv)

{

jint status = JNI_OK;

JavaVM* jvm = (JavaVM*)0;

JNIEnv* env = (JNIEnv*)0;

JavaVMInitArgs vm_args;

vm_args.version = JNI_VERSION_1_4;

vm_args.options = (JavaVMOption*)0;

vm_args.nOptions = 0;

vm_args.ignoreUnrecognized = JNI_FALSE;

status = JNI_GetDefaultJavaVMInitArgs(&vm_args);

if (0 != status) {

printf(\"%s\\n\", DispatchStatus(status));

return EXIT_FAILURE;

}

status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);

if (0 != status) {

printf(\"test: %s\\n\", DispatchStatus(status));

return EXIT_FAILURE;

}

printf(\"\\r\\n===== Array testing =====\\r\\n\");

ArrayTest(env);

printf(\"test: success\\n\");

if(jvm)

(*jvm)->DestroyJavaVM(jvm);

return EXIT_SUCCESS;

}

//该片段来自于http://outofmemory.cn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值