64,637
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include "jni.h"
#include <iostream.h>
int main(int argc, char* argv[])
{
JavaVMOption options[1];
JNIEnv * env;
JavaVM * jvm;
JavaVMInitArgs vm_args;
options[0].optionString = "-Djava.class.path=.";
vm_args.version = JNI_VERSION_1_4;
vm_args.nOptions = 1;
vm_args.options = options;
vm_args.ignoreUnrecognized = JNI_TRUE;
long status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
if (status == JNI_ERR)
{
cout<<"Can not create JVM"<<endl;
return -1;
}
printf("Created JVMn");
jclass cls = env->FindClass("org/Native/JavaNative");
printf("getClsn");
cout<<cls<<endl;
if (cls !=0)
{
jmethodID mid = env->GetStaticMethodID(cls, "testReturn", "()I");
printf("getMidn");
if (mid !=0)
{
printf("testReturnn");
int result=env->CallStaticIntMethod(cls, mid);
printf("call over result=%dn",result);
}
mid = env->GetStaticMethodID(cls, "testPrint", "()V");
if (mid !=0)
{
printf("testPrintn");
env->CallStaticVoidMethod(cls, mid);
}
mid = env->GetStaticMethodID(cls, "testInput", "(I)I");
if (mid !=0)
{
printf("testInputn");
int result=env->CallStaticIntMethod(cls, mid,22);
printf("call over result=%dn",result);
}
mid = env->GetMethodID(cls,"<init>","()V");
if (mid != 0)//获取方法成功
{
printf("ctro!=0n");
jobject obj=env->NewObject(cls, mid);
printf("new objectn");
mid = env->GetMethodID(cls, "testInstance","(I)I");
if (mid!=0)//获取方法成功
{
printf("methodID!=0n");
jint result=env->CallIntMethod( obj, mid,22);
cout<<result<<endl;
}
}
}
jvm->DestroyJavaVM();
return 0;
}