Ejemplo n.º 1
0
/*--------------------------------------------------------------------------*/
BOOL LoadDynLibJVM(char *SCILAB_PATH)
{
    /* 1] search in SCI/java/jre */
    /* 2] search in windows registry */
    /* 3] search in PATH */
    /* else ERROR Java not found */

    BOOL bOK = FALSE;
    char *JVMDLLFULLNAME = NULL;

    /* 1] search in scilab 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);

    if (!LoadFunctionsJVM(JVMDLLFULLNAME))
    {
        /* 2] search in windows registry */
        /* We try to find JRE on Windows registry*/
        if (JVMDLLFULLNAME)
        {
            FREE(JVMDLLFULLNAME);
            JVMDLLFULLNAME = NULL;
        };
        JVMDLLFULLNAME = Search_Java_RuntimeLib_in_Windows_Registry();

        /* 3] search in PATH */
        if (!LoadFunctionsJVM(JVMDLLFULLNAME))
        {
            if (JVMDLLFULLNAME)
            {
                FREE(JVMDLLFULLNAME);
                JVMDLLFULLNAME = NULL;
            };
            JVMDLLFULLNAME = (char*)MALLOC( (strlen("jvm") + strlen(SHARED_LIB_EXT) + 1) * sizeof(char));
            sprintf(JVMDLLFULLNAME, "%s%s%s%s", SCILAB_PATH, JRE_PATH, "jvm", SHARED_LIB_EXT);
            if ( LoadFunctionsJVM(JVMDLLFULLNAME) )
            {
                bOK = TRUE;
            }
        }
        else
        {
            bOK = TRUE;
        }
    }
    else
    {
        EMBEDDED_JRE = TRUE;
        bOK = TRUE;
    }

    if (JVMDLLFULLNAME)
    {
        FREE(JVMDLLFULLNAME);
        JVMDLLFULLNAME = NULL;
    };

    return bOK;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
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;
}
Ejemplo n.º 4
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;
}
Ejemplo n.º 5
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;
}