写一个Java程序,编译成.class
</pre><pre name="code" class="java">public class JNITest {
public static int ReturnInt(){
return 1001;
}
public static String ReturnString(){
return "1001String";
}
}
c++代码
int main(){
JavaVM *jvm; /* denotes a Java VM */
JNIEnv *env; /* pointer to native method interface */
JavaVMInitArgs vm_args; /* JDK/JRE 6 VM initialization arguments */
JavaVMOption* options = new JavaVMOption[1];
options[0].optionString = "-Djava.class.path=.";
vm_args.version = JNI_VERSION_1_6;
vm_args.nOptions = 1;
vm_args.options = options;
vm_args.ignoreUnrecognized = false;
/* load and initialize a Java VM, return a JNI interface
* pointer in env */
JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
delete options;
/* invoke the Main.test method using the JNI */
jclass cls = env->FindClass("JNITest");
cout<< "jclass " << cls<< endl;
jmethodID returnInt = env->GetStaticMethodID(cls, "ReturnInt", "()I");
cout<< "ReturnInt ID result " << returnInt<< endl;
int result = env->CallStaticIntMethod(cls, returnInt);
cout<< "ReturnInt result " << result<< endl;
/* We are done. */
jvm->DestroyJavaVM();
}