bool JvmLauncher::findJava()

in src/main/cpp/bootstrap/jvmlauncher.cpp [424:454]


bool JvmLauncher::findJava(const char *javaKey, const char *prefix, const char *minJavaVersion) {
    logMsg("JvmLauncher::findJava()\n\tjavaKey: %s\n\tprefix: %s\n\tminJavaVersion: %s", javaKey, prefix, minJavaVersion);
    string value;
    bool result = false;
    if (getStringFromRegistry(HKEY_LOCAL_MACHINE, javaKey, CUR_VERSION_NAME, value)) {
        if (value >= minJavaVersion) {
            string path;
            if (getStringFromRegistry(HKEY_LOCAL_MACHINE, (string(javaKey) + "\\" + value).c_str(), JAVA_HOME_NAME, path)) {
                if (*path.rbegin() == '\\') {
                    path.erase(path.length() - 1, 1);
                }                
                result = checkJava(path.c_str(), prefix);
            }
        }
    }
    if(!result && isWow64()) {
        if (getStringFromRegistry64bit(HKEY_LOCAL_MACHINE, javaKey, CUR_VERSION_NAME, value)) {
            if (value >= minJavaVersion) {
                string path;
                if (getStringFromRegistry64bit(HKEY_LOCAL_MACHINE, (string(javaKey) + "\\" + value).c_str(), JAVA_HOME_NAME, path)) {
                    if (*path.rbegin() == '\\') {
                        path.erase(path.length() - 1, 1);
                    }
                    result = checkJava(path.c_str(), prefix);
                }
            }
        }
    } 
    // probably also need to check 32bit registry when launcher becomes 64-bit but is not the case now.   
    return result;    
}