From 7fa086af1f56eb6cd6702403cd2080a3a910b096 Mon Sep 17 00:00:00 2001 From: s8n-ru <279801990+s8n-ru@users.noreply.github.com> Date: Thu, 30 Apr 2026 17:17:55 +0100 Subject: [PATCH] feat: auto-detect portable JDK in launcher/java/jdk-*/bin/java --- app/Application.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/app/Application.cpp b/app/Application.cpp index 795eb18..4923928 100644 --- a/app/Application.cpp +++ b/app/Application.cpp @@ -754,6 +754,26 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_settings->registerSetting("AutomaticJavaDownload", defaultEnableAutoJava); m_settings->registerSetting("UserAskedAboutAutomaticJavaDownload", false); + // Auto-detect portable JDK in /java/jdk-*/bin/java(.exe) + if (m_settings->get("JavaPath").toString().isEmpty()) { + QDir javaDir(FS::PathCombine(m_rootPath, m_settings->get("JavaDir").toString())); + if (javaDir.exists()) { + const QStringList jdks = javaDir.entryList({ "jdk-*", "jre-*" }, QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name | QDir::Reversed); + for (const QString& jdk : jdks) { +#ifdef Q_OS_WIN + QString candidate = FS::PathCombine(javaDir.absoluteFilePath(jdk), "bin", "java.exe"); +#else + QString candidate = FS::PathCombine(javaDir.absoluteFilePath(jdk), "bin", "java"); +#endif + if (QFileInfo(candidate).isExecutable()) { + qDebug() << "Auto-detected portable JDK:" << candidate; + m_settings->set("JavaPath", candidate); + break; + } + } + } + } + // Legacy settings m_settings->registerSetting("OnlineFixes", false);