La situation Java chez Minecraft
Minecraft demande des versions Java différentes selon sa propre version : 1.16 et avant Java 8, 1.17 Java 16, 1.18 à 1.20.4 Java 17, 1.20.5+ Java 21. Les mods sont compilés contre une version Java précise. Un mod construit pour Java 17 ne tourne pas sur une JVM Java 8 (bytecode trop récent). Dans l'autre sens, ça marche techniquement au niveau bytecode, mais en pratique les vieux mod loaders Minecraft (Forge 1.12.2 etc.) ne supportent pas les versions Java modernes, donc chaque version MC veut quand même une Java assortie. GDLauncher résout ça avec deux choses : les installations Java managed (il peut télécharger la bonne Java par version Minecraft automatiquement) et les overrides par instance (tu peux forcer une Java précise pour une instance).
Managed vs Custom Java
Managed : GDLauncher télécharge et installe la Java lui-même, depuis les builds Zulu d'Azul. Vit dans le Runtime Path sous managed_javas/. Supprimée avec l'icône poubelle quand tu veux libérer du disque. Custom : tu pointes sur une Java déjà installée sur ton système (Adoptium Temurin, Oracle JDK, GraalVM, etc.). GDLauncher valide juste le chemin ; il ne gère pas l'install. Utile si tu as déjà un JDK tuné que tu veux utiliser. Les Java détectées du système (celles que GDLauncher trouve sans que tu fasses rien) ne peuvent pas être supprimées depuis le launcher parce que GDLauncher n'en est pas propriétaire.
Profils
Un profil est une règle nommée 'utilise cette Java quand on demande la runtime Foo'. Les profils système correspondent aux paliers de runtime Java de Mojang (Java 8 → Legacy, Java 16 → Alpha, Java 17 → Beta/Gamma, Java 21 → Delta, Java 25 → Epsilon). Avec l'auto-management activé, le launcher choisit le bon Java pour chaque palier ; désactivé, tu les assignes toi-même. Les profils custom permettent de donner un nom à un chemin précis et de le référencer depuis les overrides d'instance. La plupart des gens n'ont pas besoin de profils custom, les profils système + auto-management gèrent le cas commun.
Override par instance
Dans Instance Settings, la section Java Path/Profile a un toggle. Off (default) : l'instance utilise la Java choisie par le launcher selon la version Minecraft (via les profils système). On : tu spécifies soit un Path (un fichier littéral) soit un Profile (un profil nommé). Quand tu veux un override : le modpack dit explicitement 'doit tourner sur Java X.Y.Z' et tu veux le pinner ; tu testes une JVM (GraalVM, Liberica NIK) et tu veux l'essayer sur une instance sans toucher au défaut ; tu as plusieurs installs Java 17 (Adoptium, Microsoft, etc.) et tu veux en choisir une précise.
Vérifier quelle Java a vraiment été utilisée
Après lancement, clic droit sur l'instance → View Logs. Le log launcher liste le chemin complet de l'exécutable Java appelé. À comparer avec ton override attendu.
Erreurs Java courantes
UnsupportedClassVersionError : le mod ou le serveur a été construit pour une Java plus neuve que celle qui tourne. L'erreur inclut un numéro 'class file version' (61.0 = Java 17, 65.0 = Java 21). Bascule sur une Java plus récente via profil ou override. 'Could not reserve enough space for object heap' : une Java 32-bit est utilisée (limite d'environ 1,5 Go de heap sur Windows), ou tu demandes plus de mémoire contiguë que le système peut donner. Confirme que tu as installé un JDK 64-bit et que c'est celui que pointe l'override ; si ça échoue encore, baisse le slider RAM. 'Could not find or load main class' : généralement une install de mod loader (Forge, NeoForge, Fabric) cassée ou partielle, des libraries ou des fichiers jvm args manquants, pas Java lui-même. Réinstalle le loader depuis les settings d'instance, ou recrée l'instance. Si ça persiste après ça, essaie une autre Java dans l'override.