// Invoke the main method of Hello #include #include using namespace std; const char *CLASS_NAME = "Hello"; int main( int argc, char *argv[] ) { JavaVMInitArgs vm_args; JavaVMOption options[ 1 ]; JavaVM *vm; JNIEnv *env; options[ 0 ].optionString = "-Djava.class.path=."; vm_args.options = options; vm_args.nOptions = 1; vm_args.version = JNI_VERSION_1_2; int res = JNI_CreateJavaVM( &vm, (void **)&env, &vm_args ); if( res < 0 ) { cerr << "Failed to create VM (" << res << ")" << endl; return -1; } jclass cls = env->FindClass( CLASS_NAME ); // Now try to call main jmethodID mainMethodID = env->GetStaticMethodID( cls, "main", "([Ljava/lang/String;)V" ); jclass classString = env->FindClass( "java.lang.String" ); jobjectArray argsToMain = env->NewObjectArray(0, classString, NULL); env->CallStaticVoidMethod( cls, mainMethodID, argsToMain ); vm->DestroyJavaVM( ); return 0; }