C通过JNI调用JAVA——创建Object数组参数
来源:互联网 发布:淘宝差评打电话 编辑:程序博客网 时间:2024/04/19 17:40
http://wind6266.blog.163.com/blog/static/6710907201112424521713/
C通过JNI调用JAVA——创建Object数组参数
2011-02-24 14:47:00| 分类:C / C++ | 标签:c jni java newobjectarray |字号大中小 订阅
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include <tchar.h>
#include <direct.h>
#include <jni.h>
jstring jstr(JNIEnv *env,char *s){
return (*env)->NewStringUTF(env,s);
}
int main()
{
JavaVMOption options[1];
JNIEnv *env;
JavaVM *jvm;
JavaVMInitArgs vm_args;
long status;
jclass cls;
jclass str_cls;
jmethodID mid;
jobjectArray paramArr;
char* class_name="com/example/Caller";
options[0].optionString = "-Djava.class.path=.";
vm_args.version = JNI_VERSION_1_6;
vm_args.nOptions = 1;
vm_args.options = options;
vm_args.ignoreUnrecognized = JNI_TRUE;
//return 0;
/* Create the Java VM */
status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
if (status < 0 || status == JNI_ERR) {
printf("Status of creating Java VM:%d\n",status);
fprintf(stderr, "Failed to create Java VM!\n");
exit(1);
}
/*Find the class obj*/
cls = (*env)->FindClass(env, class_name);
str_cls = (*env)->FindClass(env, "java/lang/String");
if(cls !=0)
{
/* ---------------------------------------------------------- */
/*Test to invoke a static method*/
char* static_method_name="call";
char* static_method_sign="(Ljava/lang/String;[Ljava/lang/String;)I";
/*Get method ID*/
mid = (*env)->GetStaticMethodID(env, cls, static_method_name, static_method_sign);
if(mid !=0)
{
/* *********************************
create a string array
***********************************/
paramArr = (*env)->NewObjectArray(env,3,str_cls,0);
(*env)->SetObjectArrayElement(env,paramArr,0,jstr(env,"1"));
(*env)->SetObjectArrayElement(env,paramArr,1,jstr(env,"user"));
(*env)->SetObjectArrayElement(env,paramArr,2,jstr(env,"user123"));
jint result = (*env)->CallStaticIntMethod(env, cls, mid,jstr(env,"check_password"),paramArr);
printf("Call static method %s: %d\n",static_method_name,result);
}else{
printf("Failed to find method %s!\n",static_method_name);
}
}else{
printf("Failed to find Class %s!\n",class_name);
}
/*destory JVM*/
(*jvm)->DestroyJavaVM(jvm);
return 0;
}
- C通过JNI调用JAVA——创建Object数组参数
- java通过jni调用C程序
- Java通过JNI调用C/C++函数
- JAVA通过JNI调用C函数Demo
- Android C 通过JNI 调用JAVA
- java通过jni调用c库
- Java通过JNI调用C语言
- Java 通过 JNI 调用 C/C++ 类库
- Java通过jni调用c语言方法
- JNI小程序:Java通过JNI调用C程序
- JNI C创建Java字符串数组
- NDK开发(1)——JAVA通过JNI调用C代码详细步骤
- 通过JNI在JAVA与C程序中传递参数
- JAVA通过JNI调用本地C语言方法
- JAVA通过JNI调用本地C语言方法
- JAVA通过JNI调用本地C语言方法
- 10,JAVA通过JNI调用本地C语言方法
- JAVA通过JNI调用本地C语言方法
- Ant
- oracle递归方法迭代数据
- 慎用PHP的fetchAll()方法
- 《小强与小明》——正在疯传的伟大的故事
- 工作必知
- C通过JNI调用JAVA——创建Object数组参数
- 正版windows xp操作系统价格
- Struts1.x系列教程(7):Logic标签库
- C/C++面试题(整理)
- 关于VC中输入框控件的密码属性
- Big Endian 和 Little Endian
- java“块”的研究
- Struts1.x系列教程(8):上传单个文件
- 上海600万非户籍人口获准参加“城保”