From 8421ef622dc8e51503bad3bc0fbee0aa63ff1b8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 7 Jan 2017 18:11:41 +0100 Subject: NOISSUE even more java polishing * Memory minimums lowered to 128M in all Java settings UIs * Changing the memory sizes on the wizard page does not automatically trigger checks if the executable doesn't have 'java' in the name * Java detection on linux now scans some common JRE locations, not just /usr/bin/java --- api/logic/java/JavaUtils.cpp | 33 ++++++++++++++++++++++++++++-- application/pages/InstanceSettingsPage.ui | 4 ++-- application/pages/global/JavaPage.ui | 6 +++--- application/setupwizard/JavaWizardPage.cpp | 12 +++++++---- application/setupwizard/JavaWizardPage.h | 1 + 5 files changed, 45 insertions(+), 11 deletions(-) diff --git a/api/logic/java/JavaUtils.cpp b/api/logic/java/JavaUtils.cpp index 79932eda..8851e889 100644 --- a/api/logic/java/JavaUtils.cpp +++ b/api/logic/java/JavaUtils.cpp @@ -154,10 +154,12 @@ QList JavaUtils::FindJavaPaths() KEY_WOW64_32KEY, "SOFTWARE\\JavaSoft\\Java Development Kit"); java_candidates.append(JRE64s); + java_candidates.append(MakeJavaPtr("C:/Program Files/Java/jre8/bin/javaw.exe")); java_candidates.append(MakeJavaPtr("C:/Program Files/Java/jre7/bin/javaw.exe")); java_candidates.append(MakeJavaPtr("C:/Program Files/Java/jre6/bin/javaw.exe")); java_candidates.append(JDK64s); java_candidates.append(JRE32s); + java_candidates.append(MakeJavaPtr("C:/Program Files (x86)/Java/jre8/bin/javaw.exe")); java_candidates.append(MakeJavaPtr("C:/Program Files (x86)/Java/jre7/bin/javaw.exe")); java_candidates.append(MakeJavaPtr("C:/Program Files (x86)/Java/jre6/bin/javaw.exe")); java_candidates.append(JDK32s); @@ -205,9 +207,36 @@ QList JavaUtils::FindJavaPaths() QList javas; javas.append(this->GetDefaultJava()->path); - javas.append("/opt/java/bin/java"); - javas.append("/usr/bin/java"); + auto scanJavaDir = [&](const QString & dirPath) + { + QDir dir(dirPath); + if(!dir.exists()) + return; + auto entries = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks); + for(auto & entry: entries) + { + + QString prefix; + if(entry.isAbsolute()) + { + prefix = entry.absoluteFilePath(); + } + else + { + prefix = entry.filePath(); + } + javas.append(FS::PathCombine(prefix, "jre/bin/java")); + javas.append(FS::PathCombine(prefix, "bin/java")); + } + }; + // oracle RPMs + scanJavaDir("/usr/java"); + // general locations used by distro packaging + scanJavaDir("/usr/lib/jvm"); + scanJavaDir("/usr/lib32/jvm"); + // javas stored in MultiMC's folder + scanJavaDir("java"); return javas; } #else diff --git a/application/pages/InstanceSettingsPage.ui b/application/pages/InstanceSettingsPage.ui index d1ad0c60..4a17aa78 100644 --- a/application/pages/InstanceSettingsPage.ui +++ b/application/pages/InstanceSettingsPage.ui @@ -109,7 +109,7 @@ MB - 512 + 128 65536 @@ -131,7 +131,7 @@ MB - 256 + 128 65536 diff --git a/application/pages/global/JavaPage.ui b/application/pages/global/JavaPage.ui index 9a3bee2f..ba873d34 100644 --- a/application/pages/global/JavaPage.ui +++ b/application/pages/global/JavaPage.ui @@ -7,7 +7,7 @@ 0 0 545 - 559 + 760 @@ -54,7 +54,7 @@ MB - 512 + 128 65536 @@ -90,7 +90,7 @@ MB - 256 + 128 65536 diff --git a/application/setupwizard/JavaWizardPage.cpp b/application/setupwizard/JavaWizardPage.cpp index a56fdffc..f2b5dd92 100644 --- a/application/setupwizard/JavaWizardPage.cpp +++ b/application/setupwizard/JavaWizardPage.cpp @@ -85,7 +85,7 @@ void JavaWizardPage::setupUi() m_minMemSpinBox = new QSpinBox(m_memoryGroupBox); m_minMemSpinBox->setObjectName(QStringLiteral("minMemSpinBox")); m_minMemSpinBox->setSuffix(QStringLiteral(" MB")); - m_minMemSpinBox->setMinimum(256); + m_minMemSpinBox->setMinimum(128); m_minMemSpinBox->setMaximum(m_availableMemory); m_minMemSpinBox->setSingleStep(128); m_labelMinMem->setBuddy(m_minMemSpinBox); @@ -98,7 +98,7 @@ void JavaWizardPage::setupUi() m_maxMemSpinBox = new QSpinBox(m_memoryGroupBox); m_maxMemSpinBox->setObjectName(QStringLiteral("maxMemSpinBox")); m_maxMemSpinBox->setSuffix(QStringLiteral(" MB")); - m_maxMemSpinBox->setMinimum(512); + m_maxMemSpinBox->setMinimum(128); m_maxMemSpinBox->setMaximum(m_availableMemory); m_maxMemSpinBox->setSingleStep(128); m_labelMaxMem->setBuddy(m_maxMemSpinBox); @@ -254,7 +254,7 @@ void JavaWizardPage::memoryValueChanged(int) } if(actuallyChanged) { - checkJavaPath(m_javaPathTextBox->text()); + checkJavaPathOnEdit(m_javaPathTextBox->text()); } } @@ -363,7 +363,11 @@ void JavaWizardPage::setJavaStatus(JavaWizardPage::JavaStatus status) void JavaWizardPage::javaPathEdited(const QString& path) { - // only autocheck + checkJavaPathOnEdit(path); +} + +void JavaWizardPage::checkJavaPathOnEdit(const QString& path) +{ auto realPath = FS::ResolveExecutable(path); QFileInfo pathInfo(realPath); if (pathInfo.baseName().toLower().contains("java")) diff --git a/application/setupwizard/JavaWizardPage.h b/application/setupwizard/JavaWizardPage.h index 56a40453..7b0d8830 100644 --- a/application/setupwizard/JavaWizardPage.h +++ b/application/setupwizard/JavaWizardPage.h @@ -52,6 +52,7 @@ protected slots: void checkFinished(JavaCheckResult result); protected: /* methods */ + void checkJavaPathOnEdit(const QString &path); void checkJavaPath(const QString &path); void setJavaStatus(JavaStatus status); void setupUi(); -- cgit v1.2.3