diff options
Diffstat (limited to 'launcher/java/JavaUtils.cpp')
-rw-r--r-- | launcher/java/JavaUtils.cpp | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index 8249fc29..6e5dfeae 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -77,14 +77,14 @@ QProcessEnvironment CleanEnviroment() qDebug() << "Env: ignoring" << key << value; continue; } - // filter MultiMC-related things + // filter PolyMC-related things if(key.startsWith("QT_")) { qDebug() << "Env: ignoring" << key << value; continue; } #if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) - // Do not pass LD_* variables to java. They were intended for MultiMC + // Do not pass LD_* variables to java. They were intended for PolyMC if(key.startsWith("LD_")) { qDebug() << "Env: ignoring" << key << value; @@ -149,6 +149,21 @@ JavaInstallPtr JavaUtils::GetDefaultJava() return javaVersion; } +QStringList addJavasFromEnv(QList<QString> javas) +{ + QByteArray env = qgetenv("POLYMC_JAVA_PATHS"); +#if defined(Q_OS_WIN32) + QList<QString> javaPaths = QString::fromLocal8Bit(env).split(QLatin1String(";")); +#else + QList<QString> javaPaths = QString::fromLocal8Bit(env).split(QLatin1String(":")); +#endif + for(QString i : javaPaths) + { + javas.append(i); + }; + return javas; +} + #if defined(Q_OS_WIN32) QList<JavaInstallPtr> JavaUtils::FindJavaFromRegistryKey(DWORD keyType, QString keyName, QString keyJavaDir, QString subkeySuffix) { @@ -290,7 +305,7 @@ QList<QString> JavaUtils::FindJavaPaths() KEY_WOW64_64KEY, "SOFTWARE\\Azul Systems\\Zulu", "InstallationPath"); QList<JavaInstallPtr> ZULU32s = this->FindJavaFromRegistryKey( KEY_WOW64_32KEY, "SOFTWARE\\Azul Systems\\Zulu", "InstallationPath"); - + // BellSoft Liberica QList<JavaInstallPtr> LIBERICA64s = this->FindJavaFromRegistryKey( KEY_WOW64_64KEY, "SOFTWARE\\BellSoft\\Liberica", "InstallationPath"); @@ -328,7 +343,7 @@ QList<QString> JavaUtils::FindJavaPaths() java_candidates.append(ADOPTIUMJDK32s); java_candidates.append(ZULU32s); java_candidates.append(LIBERICA32s); - + java_candidates.append(MakeJavaPtr(this->GetDefaultJava()->path)); QList<QString> candidates; @@ -363,7 +378,7 @@ QList<QString> JavaUtils::FindJavaPaths() javas.append(systemLibraryJVMDir.absolutePath() + "/" + java + "/Contents/Home/bin/java"); javas.append(systemLibraryJVMDir.absolutePath() + "/" + java + "/Contents/Commands/java"); } - return javas; + return addJavasFromEnv(javas); } #elif defined(Q_OS_LINUX) @@ -402,14 +417,14 @@ QList<QString> JavaUtils::FindJavaPaths() scanJavaDir("/usr/lib/jvm"); scanJavaDir("/usr/lib64/jvm"); scanJavaDir("/usr/lib32/jvm"); - // javas stored in MultiMC's folder + // javas stored in PolyMC's folder scanJavaDir("java"); // manually installed JDKs in /opt scanJavaDir("/opt/jdk"); scanJavaDir("/opt/jdks"); // flatpak scanJavaDir("/app/jdk"); - return javas; + return addJavasFromEnv(javas); } #else QList<QString> JavaUtils::FindJavaPaths() @@ -419,6 +434,6 @@ QList<QString> JavaUtils::FindJavaPaths() QList<QString> javas; javas.append(this->GetDefaultJava()->path); - return javas; + return addJavasFromEnv(javas); } #endif |