diff options
| author | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-03-31 19:23:58 +0300 |
|---|---|---|
| committer | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-03-31 19:23:58 +0300 |
| commit | 93a2a4498f10ad412dc3342513b7ee536408b4bb (patch) | |
| tree | 2842125813b8022aa388d29c328220bc21535d0f | |
| parent | a24c35ed41b192d8090827f0b92ddcbf696743cd (diff) | |
| download | Project-Tick-93a2a4498f10ad412dc3342513b7ee536408b4bb.tar.gz Project-Tick-93a2a4498f10ad412dc3342513b7ee536408b4bb.zip | |
NOISSUE fix JavaUtils to scan for managed Java installations in the specified directory
Signed-off-by: Mehmet Samet Duman <yongdohyun@projecttick.org>
| -rw-r--r-- | CMakeLists.txt | 3 | ||||
| -rw-r--r-- | launcher/java/JavaUtils.cpp | 25 |
2 files changed, 27 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c3b5ec6f8..b6d77d6d08 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -268,6 +268,9 @@ if(UNIX AND APPLE) set(BUNDLE_DEST_DIR ".") set(RESOURCES_DEST_DIR ".") + # Set RPATH for macOS + SET(MeshMC_BINARY_RPATH "@executable_path") + # Mac bundle settings set(MACOSX_BUNDLE_BUNDLE_NAME "${MeshMC_DisplayName}") set(MACOSX_BUNDLE_INFO_STRING "${MeshMC_DisplayName}: A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once.") diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index ce560da3fd..b4dced1ca5 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -39,6 +39,7 @@ #include <QStringList> #include <QString> #include <QDir> +#include <QDirIterator> #include <QStringList> #include <settings/Setting.h> @@ -348,7 +349,29 @@ QList<QString> JavaUtils::FindJavaPaths() java_candidates.append(ADOPTIUMJDK32s); java_candidates.append(ZULU32s); java_candidates.append(LIBERICA32s); - + + // Scan MeshMC's managed java directory ({workdir}/java/{vendor}/{version}/bin/javaw.exe) + QString managedJavaDir = FS::PathCombine(QDir::currentPath(), "java"); + QDir managedDir(managedJavaDir); + if (managedDir.exists()) { + QDirIterator vendorIt(managedJavaDir, QDir::Dirs | QDir::NoDotAndDotDot); + while (vendorIt.hasNext()) { + vendorIt.next(); + QDirIterator versionIt(vendorIt.filePath(), QDir::Dirs | QDir::NoDotAndDotDot); + while (versionIt.hasNext()) { + versionIt.next(); + QDirIterator binIt(versionIt.filePath(), QStringList() << "javaw.exe", + QDir::Files, QDirIterator::Subdirectories); + while (binIt.hasNext()) { + binIt.next(); + if (binIt.filePath().contains("/bin/")) { + java_candidates.append(MakeJavaPtr(binIt.filePath())); + } + } + } + } + } + java_candidates.append(MakeJavaPtr(this->GetDefaultJava()->path)); QList<QString> candidates; |
