1.18 Server won't start with dynmap & Journeymap
BonaireDreams opened this issue ยท 8 comments
Issue Description: Modded Forge server fails to start with Dynmap and JourneyMap. Server starts fine with either one removed.
- Dynmap Version: dynmap-3.3-SNAPSHOT-forge-1.18
- Server Version: forge 1.18 build 38.0.16
- Journeymap Version 1.18-5.8.0alpha8 (latest available)
- Pastebin of Configuration.txt: default config, first startup.
- ** crashlogs or other relevant logs:**
`Console13:46:01
Exception in thread "main" java.lang.module.ResolutionException: Modules journeymap and dynmap export package org.eclipse.jetty.http to module XXX <- This module seems to change, JEI, or supermartijn642configlib are the 2 I've seen.
at java.base/java.lang.module.Resolver.resolveFail(Resolver.java:901)
at java.base/java.lang.module.Resolver.failTwoSuppliers(Resolver.java:815)
at java.base/java.lang.module.Resolver.checkExportSuppliers(Resolver.java:736)
at java.base/java.lang.module.Resolver.finish(Resolver.java:380)
at java.base/java.lang.module.Configuration.(Configuration.java:140)
at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:494)
at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.ModuleLayerHandler.buildLayer(ModuleLayerHandler.java:70)
at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.TransformationServicesHandler.buildTransformingClassLoader(TransformationServicesHandler.java:61)
at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.run(Launcher.java:104)
at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.main(Launcher.java:77)
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:90)`
- Steps to Replicate: Please be clear in this section so we can replicate your issue
- Place dynmap and Journeymap into mod folder
- start server
- crash
[X] I have looked at all other issues and this is not a duplicate
[X] I have been able to replicate this
This is actually a Forge 1.18-ism - it appears they are being clever around module dependencies, and parsing the META-INF files in the mods. Both dynmap and journeymap include jetty in their shaded uberjars, but dynmap rebases the packages - there are literally no org.eclipse.jetty classes there, but Forge (as of 1.18 - this situation with Jetty files is quite old for both mods...) is apparently tripping over the junk META-INF/maven files that were not stripped when the uberjars were built. I'm updating the dynmap build to strip these files, as I'm sure this will be easier to do than to get forge do behave better on this point.
OK - there should be a workaround for this in the latest SNAPSHOT build (#572)
Looks to be an issue with journeymap trying to engage the webengine. Reported on JM github
Cool - it looked like that was the case, which was why I figured I'd point it out - easy to overlook that stuff :)
@mikeprimm thanks for looking into this, I will be applying the same fix in Journeymap just in case there are other mods that may conflict.
@mikeprimm thanks for looking into this, I will be applying the same fix in Journeymap just in case there are other mods that may conflict.
Cool - I'd suggest rebasing the jetty packages, too - us not each having our own class namespace is a headache sometimes :). I'm still trying to work our a clean way to embed the JDBC drivers without contaminating the JVM (modern JDBC drivers auto-register via the META-INF/services/java.sql.Driver. while classic ones do it via a static initializer in their Driver class (the Class.forName() stuff), and that registers the URL namespace handling for the whole JVM - so even rebasing MySQL driver will affect the other plugins... I'm looking at doing some classloader tricks to isolate my JDBC drivers from everyone else, but don't have it sorted out just yet...)
@mikeprimm thanks for looking into this, I will be applying the same fix in Journeymap just in case there are other mods that may conflict.
Cool - I'd suggest rebasing the jetty packages, too - us not each having our own class namespace is a headache sometimes :). I'm still trying to work our a clean way to embed the JDBC drivers without contaminating the JVM (modern JDBC drivers auto-register via the META-INF/services/java.sql.Driver. while classic ones do it via a static initializer in their Driver class (the Class.forName() stuff), and that registers the URL namespace handling for the whole JVM - so even rebasing MySQL driver will affect the other plugins... I'm looking at doing some classloader tricks to isolate my JDBC drivers from everyone else, but don't have it sorted out just yet...)
Yea, I included rebasing it with my update. We rebased all of our other shaded deps, not sure why jetty was missed.
@mikeprimm @mysticdrew FYI, Updated server with latest Dynmap build and JourneyMap Alpha9, Server starts fine and everything is functioning. Reporting this issue closed.