Merge pull request #1685 from Trial97/java
Autodetect Java bundled with official launcher
This commit is contained in:
commit
86e2f6c58c
@ -335,6 +335,7 @@ QList<QString> JavaUtils::FindJavaPaths()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
candidates.append(getMinecraftJavaBundle());
|
||||||
candidates = addJavasFromEnv(candidates);
|
candidates = addJavasFromEnv(candidates);
|
||||||
candidates.removeDuplicates();
|
candidates.removeDuplicates();
|
||||||
return candidates;
|
return candidates;
|
||||||
@ -360,6 +361,7 @@ QList<QString> JavaUtils::FindJavaPaths()
|
|||||||
javas.append(systemLibraryJVMDir.absolutePath() + "/" + java + "/Contents/Home/bin/java");
|
javas.append(systemLibraryJVMDir.absolutePath() + "/" + java + "/Contents/Home/bin/java");
|
||||||
javas.append(systemLibraryJVMDir.absolutePath() + "/" + java + "/Contents/Commands/java");
|
javas.append(systemLibraryJVMDir.absolutePath() + "/" + java + "/Contents/Commands/java");
|
||||||
}
|
}
|
||||||
|
javas.append(getMinecraftJavaBundle());
|
||||||
javas = addJavasFromEnv(javas);
|
javas = addJavasFromEnv(javas);
|
||||||
javas.removeDuplicates();
|
javas.removeDuplicates();
|
||||||
return javas;
|
return javas;
|
||||||
@ -411,6 +413,7 @@ QList<QString> JavaUtils::FindJavaPaths()
|
|||||||
// javas downloaded by sdkman
|
// javas downloaded by sdkman
|
||||||
scanJavaDirs(FS::PathCombine(home, ".sdkman/candidates/java"));
|
scanJavaDirs(FS::PathCombine(home, ".sdkman/candidates/java"));
|
||||||
|
|
||||||
|
javas.append(getMinecraftJavaBundle());
|
||||||
javas = addJavasFromEnv(javas);
|
javas = addJavasFromEnv(javas);
|
||||||
javas.removeDuplicates();
|
javas.removeDuplicates();
|
||||||
return javas;
|
return javas;
|
||||||
@ -423,6 +426,7 @@ QList<QString> JavaUtils::FindJavaPaths()
|
|||||||
QList<QString> javas;
|
QList<QString> javas;
|
||||||
javas.append(this->GetDefaultJava()->path);
|
javas.append(this->GetDefaultJava()->path);
|
||||||
|
|
||||||
|
javas.append(getMinecraftJavaBundle());
|
||||||
return addJavasFromEnv(javas);
|
return addJavasFromEnv(javas);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -431,3 +435,42 @@ QString JavaUtils::getJavaCheckPath()
|
|||||||
{
|
{
|
||||||
return APPLICATION->getJarPath("JavaCheck.jar");
|
return APPLICATION->getJarPath("JavaCheck.jar");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QStringList getMinecraftJavaBundle()
|
||||||
|
{
|
||||||
|
QString partialPath;
|
||||||
|
QString executable = "java";
|
||||||
|
#if defined(Q_OS_OSX)
|
||||||
|
partialPath = FS::PathCombine(QDir::homePath(), "Library/Application Support");
|
||||||
|
#elif defined(Q_OS_WIN32)
|
||||||
|
partialPath = QProcessEnvironment::systemEnvironment().value("LOCALAPPDATA", "");
|
||||||
|
executable += "w.exe";
|
||||||
|
#else
|
||||||
|
partialPath = QDir::homePath();
|
||||||
|
#endif
|
||||||
|
auto minecraftPath = FS::PathCombine(partialPath, ".minecraft", "runtime");
|
||||||
|
QStringList javas;
|
||||||
|
QStringList processpaths{ minecraftPath };
|
||||||
|
|
||||||
|
while (!processpaths.isEmpty()) {
|
||||||
|
auto dirPath = processpaths.takeFirst();
|
||||||
|
QDir dir(dirPath);
|
||||||
|
if (!dir.exists())
|
||||||
|
continue;
|
||||||
|
auto entries = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
|
||||||
|
auto binFound = false;
|
||||||
|
for (auto& entry : entries) {
|
||||||
|
if (entry.baseName() == "bin") {
|
||||||
|
javas.append(FS::PathCombine(entry.canonicalFilePath(), executable));
|
||||||
|
binFound = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!binFound) {
|
||||||
|
for (auto& entry : entries) {
|
||||||
|
processpaths << entry.canonicalFilePath();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return javas;
|
||||||
|
}
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
QString stripVariableEntries(QString name, QString target, QString remove);
|
QString stripVariableEntries(QString name, QString target, QString remove);
|
||||||
QProcessEnvironment CleanEnviroment();
|
QProcessEnvironment CleanEnviroment();
|
||||||
|
QStringList getMinecraftJavaBundle();
|
||||||
|
|
||||||
class JavaUtils : public QObject {
|
class JavaUtils : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
Loading…
Reference in New Issue
Block a user