예제 #1
0
/*--------------------------------------------------------------------------*/ 
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;
}
예제 #2
0
/*----------------------------------------------------------------------------------*/
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;
}
예제 #3
0
/*----------------------------------------------------------------------------------*/
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;
}
예제 #4
0
/*--------------------------------------------------------------------------*/
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;
}