You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Just commenting on this issue with my own investigation, was able to confirm this issue.
We had a similar report in MinecraftForge/MinecraftForge#10797. Standard forge install into mojang's launcher is working, so something appears to be going wrong with Prism's install process for this new version.
@Fealtous were there any changes to how forge installs?
I do not follow the development of all the loaders and I do not know exactly all the details.
And from our side, even if the current solution is not actually perfect, did work before and we did not change anything to it(and I know we should fix that at some point, and properly install the loaders without the re-runinig the installer).
Did try a bunch of things(most probably wrong leads).
But at the end I did observe that the forge-26.1-62.0.3-client.jar file is generated correctly(the sha matches with the one from .../install_profile.json) and is added to the libraries path.
So I do not understand why it fails to launch, as basically the patched version is the wanted one.
So the issue is that you add the binary patched class to the classpath at the end.
Which means that it will be overwritten by the vanilla jar file as they contain the same class files.
The patched jar needs to be before the vanilla jar on the classpath as the default ClassLoader is a first found loader.
A possible solution if you insist on running the installer every run, is to simply build the classpath as the version.json specifies, including the non-downloadable artifacts. So that you have the correctly ordered classpath. Which might work (haven't looked into it) as things should be loaded on demand. And only demanded after your installer wrapper has run.
Another option would be to provide a flag, which i've asked Peter for for years, that allows a version.json to tell you to skip adding the vanilla jar file to the classpath. We don't use it at all, there is no reason it needs to exist for us.
"Why does this work in old versions?" Before Minecraft was Obfuscated, which means their classes were not the same name as the classes in our patched jar. So there was no conflict.
Thanks LexManos for the solid lead. Is the vanilla jar file optional for all versions? Or is some kind of flag already present in version.json?
Looking into sorting the class path for now, And I'm willing to add a flag for skipping minecraft jar file (asking if it should be always skipped for forge/detected automatically from version.json or just a launcher setting).
For now a quick and dirty fix that should work without any changes from us(until we actually fix it)
go to the instance settings
go to versions tab
click Minecraft
click Customize
click edit (this should open .../<instance_root>/patches/net.minecraft.json)
locate the mainJar key
replace the artifact there with a library from above
Honestly I haven't gone through the full history to verify if every version doesn't use the main jar.
I'm pretty sure we do use it for <1.13 as that is before the re-write to JPMS and all that.
I don't like special casing launchers. As our standard target will always been the vanilla launcher. But a special flag might be feasible. And just hope that other launchers follow suit.
Honestly tho, I would advise just skipping the installer wrapper and doing it at install time like it should be.
There is no reason to re-run the installer every launch, it wastes so much time for the end user.
[Somewhat related sorry for the ping lex]: Something that would be nice is if it automatically put jarmods above the Minecraft jar, I frequently use them to recreate "lost" versions, for example Minecraft 2.0, and I am not the best at remembering specific nuances, so I keep running into problems where I forget to move it up. (I understand if you want to write this off as "you should git gud then" and I'm fine if you do.)
Activity
[-]Failed launch Forge 62.0.1 (26.1)[/-][+]Failed to launch Forge 62.0.1 (26.1)[/+]Fealtous commentedon Mar 26, 2026
Just commenting on this issue with my own investigation, was able to confirm this issue.
We had a similar report in MinecraftForge/MinecraftForge#10797. Standard forge install into mojang's launcher is working, so something appears to be going wrong with Prism's install process for this new version.
Trial97 commentedon Mar 26, 2026
@Fealtous were there any changes to how forge installs?
I do not follow the development of all the loaders and I do not know exactly all the details.
And from our side, even if the current solution is not actually perfect, did work before and we did not change anything to it(and I know we should fix that at some point, and properly install the loaders without the re-runinig the installer).
Fealtous commentedon Mar 27, 2026
@Trial97
Yes, we removed the renaming steps since they don't apply for 26.1+, so all that remains is the binpatching.
Trial97 commentedon Mar 27, 2026
Did try a bunch of things(most probably wrong leads).
But at the end I did observe that the
forge-26.1-62.0.3-client.jarfile is generated correctly(the sha matches with the one from.../install_profile.json) and is added to the libraries path.So I do not understand why it fails to launch, as basically the patched version is the wanted one.
LexManos commentedon Mar 27, 2026
So the issue is that you add the binary patched class to the classpath at the end.
Which means that it will be overwritten by the vanilla jar file as they contain the same class files.
The patched jar needs to be before the vanilla jar on the classpath as the default ClassLoader is a first found loader.
A possible solution if you insist on running the installer every run, is to simply build the classpath as the version.json specifies, including the non-downloadable artifacts. So that you have the correctly ordered classpath. Which might work (haven't looked into it) as things should be loaded on demand. And only demanded after your installer wrapper has run.
Another option would be to provide a flag, which i've asked Peter for for years, that allows a version.json to tell you to skip adding the vanilla jar file to the classpath. We don't use it at all, there is no reason it needs to exist for us.
"Why does this work in old versions?" Before Minecraft was Obfuscated, which means their classes were not the same name as the classes in our patched jar. So there was no conflict.
Trial97 commentedon Mar 27, 2026
Thanks LexManos for the solid lead. Is the vanilla jar file optional for all versions? Or is some kind of flag already present in version.json?
Looking into sorting the class path for now, And I'm willing to add a flag for skipping minecraft jar file (asking if it should be always skipped for forge/detected automatically from version.json or just a launcher setting).
For now a quick and dirty fix that should work without any changes from us(until we actually fix it)
mainJarkeye.g.
LexManos commentedon Mar 28, 2026
Honestly I haven't gone through the full history to verify if every version doesn't use the main jar.
I'm pretty sure we do use it for <1.13 as that is before the re-write to JPMS and all that.
I don't like special casing launchers. As our standard target will always been the vanilla launcher. But a special flag might be feasible. And just hope that other launchers follow suit.
Honestly tho, I would advise just skipping the installer wrapper and doing it at install time like it should be.
There is no reason to re-run the installer every launch, it wastes so much time for the end user.
GameLord2011 commentedon Apr 2, 2026
[Somewhat related sorry for the ping lex]: Something that would be nice is if it automatically put jarmods above the Minecraft jar, I frequently use them to recreate "lost" versions, for example Minecraft 2.0, and I am not the best at remembering specific nuances, so I keep running into problems where I forget to move it up. (I understand if you want to write this off as "you should git gud then" and I'm fine if you do.)