int main(int argc, char* argv[]) { options.mainClass = (char*) _bcMainClass; options.rawBootclasspath = _bcBootclasspath; options.rawClasspath = _bcClasspath; options.loadBootClass = loadBootClass; options.loadUserClass = loadUserClass; options.classInitialized = classInitialized; options.loadInterfaces = loadInterfaces; options.loadFields = loadFields; options.loadMethods = loadMethods; options.findClassAt = findClassAt; options.exceptionMatch = exceptionMatch; options.dynamicJNI = _bcDynamicJNI; options.staticLibs = _bcStaticLibs; options.runtimeData = &_bcRuntimeData; options.listBootClasses = listBootClasses; options.listUserClasses = listUserClasses; if (!rvmInitOptions(argc, argv, &options, FALSE)) { fprintf(stderr, "rvmInitOptions(...) failed!\n"); return 1; } Env* env = rvmStartup(&options); if (!env) { fprintf(stderr, "rvmStartup(...) failed!\n"); return 1; } vm = env->vm; jint result = rvmRun(env) ? 0 : 1; rvmShutdown(env, result); return result; }
static int bcmain(int argc, char* argv[]) { initOptions(); if (!rvmInitOptions(argc, argv, &options, FALSE)) { fprintf(stderr, "rvmInitOptions(...) failed!\n"); return 1; } Env* env = rvmStartup(&options); if (!env) { fprintf(stderr, "rvmStartup(...) failed!\n"); return 1; } vm = env->vm; jint result = rvmRun(env) ? 0 : 1; rvmShutdown(env, result); return result; }
jint JNI_CreateJavaVM(JavaVM** p_vm, JNIEnv** p_env, void* pvm_args) { initOptions(); JavaVMInitArgs* vmArgs = (JavaVMInitArgs*) pvm_args; if (vmArgs) { for (int i = 0; i < vmArgs->nOptions; i++) { JavaVMOption* opt = &vmArgs->options[i]; if (startsWith(opt->optionString, "-rvm:")) { char* arg = &opt->optionString[5]; rvmParseOption(arg, &options); } else if (startsWith(opt->optionString, "-X")) { char* arg = &opt->optionString[2]; rvmParseOption(arg, &options); } else if (startsWith(opt->optionString, "-D")) { char* arg = &opt->optionString[1]; rvmParseOption(arg, &options); } else if (startsWith(opt->optionString, "-verbose")) { rvmParseOption("log=trace", &options); } } } if (!rvmInitOptions(0, NULL, &options, FALSE)) { return JNI_ERR; } // Start up robovm (JNI) Env* env = rvmStartup(&options); if (!env) { return JNI_ERR; } vm = env->vm; // Return values. if (p_vm) { *p_vm = &vm->javaVM; } if (p_env) { *p_env = &env->jni; } return JNI_OK; }