/*--------------------------------------------------------------------------*/ static JavaVM *SearchCreatedJavaVMEmbedded(char *SCILAB_PATH) { JavaVM *jvm = NULL; jsize jvm_count = 0; jint res=0; char *JVMDLLFULLNAME=NULL; /* search in SCI/java/jre */ JVMDLLFULLNAME=(char*)MALLOC( (strlen(SCILAB_PATH)+strlen(JRE_PATH)+strlen("/bin/")+strlen(JVM_TYPE)+strlen("/jvm")+strlen(SHARED_LIB_EXT)+1)*sizeof(char)); sprintf(JVMDLLFULLNAME,"%s%s%s%s%s%s",SCILAB_PATH,JRE_PATH,"/bin/",JVM_TYPE,"/jvm",SHARED_LIB_EXT); FreeDynLibJVM(); if (LoadFunctionsJVM(JVMDLLFULLNAME)) { res = SciJNI_GetCreatedJavaVMs (&jvm, 1, &jvm_count); if ( jvm_count == 1 ) { if (JVMDLLFULLNAME){FREE(JVMDLLFULLNAME);JVMDLLFULLNAME=NULL;} return jvm; } else jvm = NULL; } if (JVMDLLFULLNAME){FREE(JVMDLLFULLNAME);JVMDLLFULLNAME=NULL;} return jvm; }
/*----------------------------------------------------------------------------------*/ JavaVM *SearchCreatedJavaVMRegistry(void) { JavaVM *jvm = NULL; jsize jvm_count = 0; jint res = 0; char *JVMDLLFULLNAME = NULL; JVMDLLFULLNAME = Search_Java_RuntimeLib_in_Windows_Registry(); FreeDynLibJVM(); if (LoadFunctionsJVM(JVMDLLFULLNAME)) { res = SciJNI_GetCreatedJavaVMs (&jvm, 1, &jvm_count); if ( jvm_count == 1 ) { if (JVMDLLFULLNAME) { FREE(JVMDLLFULLNAME); JVMDLLFULLNAME = NULL; } return jvm; } else { jvm = NULL; } } if (JVMDLLFULLNAME) { FREE(JVMDLLFULLNAME); JVMDLLFULLNAME = NULL; } return jvm; }
/*----------------------------------------------------------------------------------*/ static JavaVM *SearchCreatedJavaVMPath(void) { JavaVM *jvm = NULL; jsize jvm_count = 0; jint res = 0; char *JVMDLLFULLNAME = NULL; FreeDynLibJVM(); JVMDLLFULLNAME = (char*)MALLOC( (strlen("jvm") + strlen(SHARED_LIB_EXT) + 1) * sizeof(char)); sprintf(JVMDLLFULLNAME, "%s%s", "jvm", SHARED_LIB_EXT); if (LoadFunctionsJVM(JVMDLLFULLNAME)) { res = SciJNI_GetCreatedJavaVMs (&jvm, 1, &jvm_count); if ( jvm_count == 1 ) { if (JVMDLLFULLNAME) { FREE(JVMDLLFULLNAME); JVMDLLFULLNAME = NULL; }; return jvm; } else { jvm = NULL; } } return jvm; }
/*--------------------------------------------------------------------------*/ JavaVM *getScilabJavaVM(void) { if (!jvm_SCILAB && IsFromJava()) { /* If getScilabJavaVM is called from C called itself from JavaSci * (in nwni mode) the function returns a JVM */ JavaVM *vm = 0; JavaVM **vmBuf = MALLOC(sizeof(JavaVM *) * 1); jsize size = 0; if (!hasJvmSymbolsLoaded()) { /* We load symbols of the current jvm already used */ LoadFunctionsJVM(NULL); } SciJNI_GetCreatedJavaVMs(vmBuf, 1, &size); if (size) { vm = *vmBuf; } FREE(vmBuf); return vm; } return jvm_SCILAB; }