Die Java-Situation bei Minecraft
Minecraft braucht je nach Version unterschiedliches Java: 1.16 und früher Java 8, 1.17 Java 16, 1.18 bis 1.20.4 Java 17, 1.20.5+ Java 21. Mods werden gegen eine bestimmte Java-Version kompiliert. Ein für Java 17 gebauter Mod läuft nicht auf einer Java-8-JVM (Bytecode zu neu). Andersrum klappt's auf Bytecode-Ebene technisch, aber alte Minecraft-Mod-Loader (Forge 1.12.2 usw.) unterstützen moderne Java-Versionen schlicht nicht, also will jede MC-Version am Ende doch ein passendes Java. GDLauncher löst das mit zweierlei: managed Java-Installationen (lädt automatisch das passende Java pro Minecraft-Version) und Per-Instanz-Overrides (du erzwingst eine bestimmte Java-Version für eine Instanz).
Managed vs. Custom Java
Managed: GDLauncher lädt und installiert das Java selbst, aus Azuls Zulu-Builds. Liegt im Runtime Path unter managed_javas/. Über das Mülleimer-Icon löschbar, wenn du Platz brauchst. Custom: Du zeigst auf ein Java, das schon auf dem System liegt (Adoptium Temurin, Oracle JDK, GraalVM, was auch immer). GDLauncher prüft nur den Pfad und verwaltet die Installation nicht. Praktisch, wenn du ein getuntes JDK hast, das du nutzen willst. System-erkannte Javas (die GDLauncher ohne Zutun findet) kannst du im Launcher nicht löschen, GDLauncher besitzt sie nicht.
Profile
Ein Profil ist eine benannte Regel 'nimm dieses Java, wenn etwas nach der Foo-Runtime fragt'. System-Profile entsprechen Mojangs Java-Runtime-Stufen (Java 8 → Legacy, Java 16 → Alpha, Java 17 → Beta/Gamma, Java 21 → Delta, Java 25 → Epsilon). Mit Auto-Management an wählt der Launcher das passende Java pro Stufe selbst, mit aus weist du sie selbst zu. Custom-Profile geben einem bestimmten Pfad einen Namen, auf den du im Instanz-Override verweisen kannst. Die meisten brauchen keine Custom-Profile, System-Profile plus Auto-Management decken den Standardfall ab.
Per-Instanz-Override
In den Instance Settings hat die Java-Path/Profile-Sektion einen Toggle. Aus (default): Die Instanz nutzt das Java, das der Launcher anhand der Minecraft-Version wählt (über System-Profile). An: Du gibst entweder Path (eine konkrete Datei) oder Profile (ein benanntes Profil) an. Wann du einen Override willst: das Modpack sagt explizit 'muss auf Java X.Y.Z laufen' und du willst's pinnen; du testest eine JVM (GraalVM, Liberica NIK) und willst's auf einer Instanz probieren, ohne den Default zu ändern; du hast mehrere Java-17-Installs (Adoptium, Microsoft etc.) und willst gezielt eines.
Welches Java wurde wirklich genutzt
Nach dem Start Rechtsklick auf die Instanz → View Logs. Das Launcher-Log listet den vollen Pfad des aufgerufenen Java-Executables. Mit deinem erwarteten Override abgleichen.
Häufige Java-Fehler
UnsupportedClassVersionError: Der Mod oder Server ist für ein neueres Java gebaut als das laufende. Die Fehlermeldung enthält eine 'class file version' (61.0 = Java 17, 65.0 = Java 21). Über Profil oder Override auf neueres Java wechseln. 'Could not reserve enough space for object heap': Ein 32-Bit-Java wird benutzt (auf Windows etwa 1,5 GB Heap-Limit), oder du fragst nach mehr zusammenhängendem Speicher, als das System bereitstellen kann. Sicherstellen, dass ein 64-Bit-JDK installiert ist und der Override darauf zeigt; wenn es weiter scheitert, den RAM-Regler runterziehen. 'Could not find or load main class': Meist eine unvollständige oder kaputte Mod-Loader-Installation (Forge, NeoForge, Fabric), fehlende Libraries oder jvm-args-Dateien, nicht Java selbst. Loader aus den Instanz-Einstellungen neu installieren oder die Instanz neu anlegen. Wenn's danach noch klemmt, im Override ein anderes Java probieren.