예제 #1
0
파일: jinit.c 프로젝트: HarryR/sanos
int init_jvm() {
  jint rc;

  // Get JVM options from os.ini
  init_jvm_args();

  // Load VM
  if (hjvm == NULL) {
    char *jvmname = get_property(cfg, cfgname, "jvm", "jvm.dll");

    hjvm = dlopen(jvmname, 0);
    if (hjvm == NULL) {
      syslog(LOG_ERR, "Error loading JVM %s", jvmname);
      return -1;
    }
  }

  if (!CreateJavaVM) {
    CreateJavaVM = (jint (JNICALL *)(JavaVM **pvm, void **env, void *args)) dlsym(hjvm, "JNI_CreateJavaVM");
    if (!CreateJavaVM) {
      syslog(LOG_ERR, "Unable to find CreateJavaVM");
      return -1;
    }
  }

  // Create VM instance
  if (!vm) {
    rc = CreateJavaVM(&vm, (void **) &env, &args);
    if (rc != JNI_OK) {
      syslog(LOG_ERR, "Error %d creating java vm", rc);
      return -1;
    }
  } else {
    rc = (*vm)->AttachCurrentThread(vm, (void **) &env, &args);
    if (rc != JNI_OK) {
      syslog(LOG_ERR, "Error %d attaching to vm", rc);
      return -1;
    }
  }

  return 0;
}
void test_java_thread_setup(int argc, char *argv[]) {
    create_java_vm_func CreateJavaVM;
    JavaVMInitArgs args;
    JNIEnv * jni_env;
    int i;

    CreateJavaVM = test_get_java_vm_ptr();
    assert(CreateJavaVM);

    args.version = JNI_VERSION_1_2;
    args.nOptions = argc;
    args.options = (JavaVMOption *) malloc(args.nOptions * sizeof(JavaVMOption));
    args.options[0].optionString = "-Djava.class.path=.";
    for (i = 1; i < argc; i++) {
        args.options[i].optionString = argv[i];
        args.options[i].extraInfo = NULL;
    }

    log_debug("test_java_thread_init()");

    hythread_sleep(1000);
    CreateJavaVM(&GLOBAL_VM, &jni_env, &args);
}
예제 #3
0
void SceneGraph::setJavaEnv(char *javaClassPath, jint (JNICALL *printfn)(FILE *fp, const char *format, va_list args)) 
{
	CreateJavaVM(javaClassPath, printfn);
}