Same issue with Forge for 1.20 and 1.20.1. It works fine for 1.19.4, and older.
I did install forge-1.20.1-47.0.35-installer.jar, and got following exception while running game using 1.20.1-forge-47.0.35 profile:
[00:32:18] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--username, xxx, --version, 1.20.1-forge-47.0.35, --gameDir, C:\Users\xxx\AppData\Roaming\.minecraft, --assetsDir, C:\Users\xxx\AppData\Roaming\.minecraft\assets, --assetIndex, 5, --uuid, 11111111111111111111111111111111, --accessToken, ????????, --clientId, ${clientid}, --xuid, ${auth_xuid}, --userType, legacy, --versionType, release, --launchTarget, forgeclient, --fml.forgeVersion, 47.0.35, --fml.mcVersion, 1.20.1, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20230612.114412]
[00:32:18] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 10.0.9+10.0.9+main.dcd20f30 starting: java version 17.0.7 by Eclipse Adoptium; OS Windows 10 arch amd64 version 10.0
[00:32:18] [main/FATAL] [cp.mo.mo.LaunchPluginHandler/MODLAUNCHER]: Encountered serious error loading launch plugin service. Things will not work well
java.util.ServiceConfigurationError: cpw.mods.modlauncher.serviceapi.ILaunchPluginService: Provider net.minecraftforge.fml.loading.RuntimeDistCleaner could not be instantiated
at java.util.ServiceLoader.fail(ServiceLoader.java:586) ~[?:?] {}
at java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:813) ~[?:?] {}
at java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:729) ~[?:?] {}
at cpw.mods.modlauncher.util.ServiceLoaderUtils.lambda$streamWithErrorHandling$0(ServiceLoaderUtils.java:39) ~[modlauncher-10.0.9.jar:?] {}
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[?:?] {}
at java.util.ServiceLoader$ProviderSpliterator.tryAdvance(ServiceLoader.java:1499) ~[?:?] {}
at java.util.Spliterator.forEachRemaining(Spliterator.java:332) ~[?:?] {}
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?] {}
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?] {}
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[?:?] {}
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?] {}
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[?:?] {}
at cpw.mods.modlauncher.LaunchPluginHandler.<init>(LaunchPluginHandler.java:46) ~[modlauncher-10.0.9.jar:?] {}
at cpw.mods.modlauncher.Launcher.<init>(Launcher.java:65) ~[modlauncher-10.0.9.jar:?] {}
at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar:?] {}
at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar:?] {}
at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar:?] {}
at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] {}
Caused by: java.lang.NoClassDefFoundError: net/minecraftforge/api/distmarker/OnlyIn
at net.minecraftforge.fml.loading.RuntimeDistCleaner.<clinit>(RuntimeDistCleaner.java:42) ~[fmlloader-1.20.1-47.0.35.jar%2380!/:1.0] {}
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {}
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {}
at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {}
at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?] {}
at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?] {}
at java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:789) ~[?:?] {}
... 16 more
Caused by: java.lang.ClassNotFoundException: net.minecraftforge.api.distmarker.OnlyIn
at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[?:?] {}
at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?] {}
at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:137) ~[securejarhandler-2.1.10.jar:?] {}
at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?] {}
at net.minecraftforge.fml.loading.RuntimeDistCleaner.<clinit>(RuntimeDistCleaner.java:42) ~[fmlloader-1.20.1-47.0.35.jar%2380!/:1.0] {}
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {}
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {}
at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {}
at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?] {}
at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?] {}
at java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:789) ~[?:?] {}
... 16 more
[00:32:18] [main/INFO] [ne.mi.fm.lo.ImmediateWindowHandler/]: Loading ImmediateWindowProvider fmlearlywindow
[00:32:19] [main/INFO] [EARLYDISPLAY/]: Trying GL version 4.6
[00:32:19] [main/INFO] [EARLYDISPLAY/]: Requested GL version 4.6 got version 4.6
[00:32:19] [main/ERROR] [ne.mi.fm.lo.FMLLoader/CORE]: Dist Cleaner is missing, we need this to run
[00:32:19] [main/ERROR] [cp.mo.mo.TransformationServiceDecorator/MODLAUNCHER]: Service failed to load fml
cpw.mods.modlauncher.api.IncompatibleEnvironmentException: Missing DistCleaner, cannot run!
at net.minecraftforge.fml.loading.FMLLoader.lambda$onInitialLoad$2(FMLLoader.java:94) ~[fmlloader-1.20.1-47.0.35.jar:1.0] {}
at java.util.Optional.orElseThrow(Optional.java:403) ~[?:?] {}
at net.minecraftforge.fml.loading.FMLLoader.onInitialLoad(FMLLoader.java:92) ~[fmlloader-1.20.1-47.0.35.jar:1.0] {}
at net.minecraftforge.fml.loading.FMLServiceProvider.onLoad(FMLServiceProvider.java:100) ~[fmlloader-1.20.1-47.0.35.jar:1.0] {}
at cpw.mods.modlauncher.TransformationServiceDecorator.onLoad(TransformationServiceDecorator.java:53) ~[modlauncher-10.0.9.jar:?] {}
at cpw.mods.modlauncher.TransformationServicesHandler.lambda$loadTransformationServices$11(TransformationServicesHandler.java:116) ~[modlauncher-10.0.9.jar:?] {}
at java.util.HashMap$Values.forEach(HashMap.java:1065) ~[?:?] {}
at cpw.mods.modlauncher.TransformationServicesHandler.loadTransformationServices(TransformationServicesHandler.java:116) ~[modlauncher-10.0.9.jar:?] {}
at cpw.mods.modlauncher.TransformationServicesHandler.initializeTransformationServices(TransformationServicesHandler.java:48) ~[modlauncher-10.0.9.jar:?] {}
at cpw.mods.modlauncher.Launcher.run(Launcher.java:88) ~[modlauncher-10.0.9.jar:?] {}
at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar:?] {}
at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar:?] {}
at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar:?] {}
at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] {}
[00:32:19] [main/ERROR] [cp.mo.mo.TransformationServicesHandler/MODLAUNCHER]: Found 1 services that failed to load : [fml]
Exception in thread "main" cpw.mods.modlauncher.InvalidLauncherSetupException: Invalid Services found fml
at MC-BOOTSTRAP/
[email protected]/cpw.mods.modlauncher.TransformationServicesHandler.validateTransformationServices(TransformationServicesHandler.java:110)
at MC-BOOTSTRAP/
[email protected]/cpw.mods.modlauncher.TransformationServicesHandler.initializeTransformationServices(TransformationServicesHandler.java:49)
at MC-BOOTSTRAP/
[email protected]/cpw.mods.modlauncher.Launcher.run(Launcher.java:88)
at MC-BOOTSTRAP/
[email protected]/cpw.mods.modlauncher.Launcher.main(Launcher.java:78)
at MC-BOOTSTRAP/
[email protected]/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26)
at MC-BOOTSTRAP/
[email protected]/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23)
at
[email protected]/cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141)
I found that missing class file "java.lang.NoClassDefFoundError: net/minecraftforge/api/distmarker/OnlyIn" is now included in mergetool-x.x.x-api.jar instead of forgespi-x.x.x.jar for 1.19.x.
What I did was locate merge tool version used by forge looking into Forge profile config file:
%APPDATA%\.minecraft\versions\1.20.1-forge-47.0.35\1.20.1-forge-47.0.35.json
and searching for "mergetool" string, then it's path attribute:
"path": "net/minecraftforge/mergetool/1.1.5/mergetool-1.1.5-api.jar"
Then I added this to java modules path within same 1.20.1-forge-47.0.35.json file, within "jvm" as first module next to "-p" parameter:
Before change:
"-p",
"${library_directory}/cpw/mods/bootstraplauncher/1.1.2/bootstraplauncher-1.1.2.jar${classpath_separator}.....
After change:
"-p",
"${library_directory}/net/minecraftforge/mergetool/1.1.5/mergetool-1.1.5-api.jar${classpath_separator}${library_directory}/cpw/mods/bootstraplauncher/1.1.2/bootstraplauncher-1.1.2.jar${classpath_separator}.....
It works, but I don't know why this library is not included into forge json config file by Forge installer by default.
Maybe some launchers are including all libraries from %APPDATA%\.minecraft\libraries\ into classpath, but others not.