QuiltMC / quilt-installer

The Quilt installer for the official Minecraft launcher and servers
Apache License 2.0
40 stars 20 forks source link

Server installation is broken #15

Open leo60228 opened 2 years ago

leo60228 commented 2 years ago

(I wasn't sure whether to file this here or in quilt-loader)

Following the official server directions:

It’ll also create a set of scripts you can use to launch the server - a .bat script for Windows and a .sh script for Mac and Linux.

This doesn't happen, which is a TODO.

java -jar quilt-server-launch.jar doesn't work:

Error: Could not find or load main class org.quiltmc.loader.impl.launch.server.QuiltServerLauncher
Caused by: java.lang.ClassNotFoundException: org.quiltmc.loader.impl.launch.server.QuiltServerLauncher

This is because that class was not actually renamed/repackaged for quilt-loader, and is still net.fabricmc.loader.launch.server.FabricServerLauncher. java -cp quilt-server-launch.jar net.fabricmc.loader.launch.server.FabricServerLauncher gives another error:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

This can be solved by channeling your modding skills of 10 years ago and deleting META-INF/FABRIC1.SF and META-INF/FABRIC1.RSA from the jar. At this point, Quilt will work... as long as no mods are installed. Adding QSL into the mix gives this error, which I wasn't able to work around:

java.lang.RuntimeException: An exception occurred when launching the server!
        at net.fabricmc.loader.launch.server.FabricServerLauncher.main(FabricServerLauncher.java:64) ~[quilt-server-launch.jar:?]
Caused by: java.lang.reflect.InvocationTargetException
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
        at net.fabricmc.loader.launch.server.FabricServerLauncher.main(FabricServerLauncher.java:62) ~[quilt-server-launch.jar:?]
Caused by: java.lang.RuntimeException: Error creating Mixin config quilt_item_setting.mixins.json for mod quilt_item_setting
        at net.fabricmc.loader.launch.common.FabricMixinBootstrap.init(FabricMixinBootstrap.java:113) ~[quilt-server-launch.jar:?]
        at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:147) ~[quilt-server-launch.jar:?]
        at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:70) ~[quilt-server-launch.jar:?]
        at org.quiltmc.loader.launch.knot.KnotHelper.launchServer(KnotHelper.java:32) ~[quilt-server-launch.jar:?]
        at net.fabricmc.loader.launch.knot.KnotServer.main(KnotServer.java:23) ~[quilt-server-launch.jar:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
        at net.fabricmc.loader.launch.server.FabricServerLauncher.main(FabricServerLauncher.java:62) ~[quilt-server-launch.jar:?]
Caused by: org.spongepowered.asm.launch.MixinInitialisationError: Error initialising mixin config quilt_item_setting.mixins.json
        at org.spongepowered.asm.mixin.transformer.Config.create(Config.java:153) ~[quilt-server-launch.jar:?]
        at org.spongepowered.asm.mixin.Mixins.createConfiguration(Mixins.java:100) ~[quilt-server-launch.jar:?]
        at org.spongepowered.asm.mixin.Mixins.addConfiguration(Mixins.java:87) ~[quilt-server-launch.jar:?]
        at net.fabricmc.loader.launch.common.FabricMixinBootstrap.init(FabricMixinBootstrap.java:111) ~[quilt-server-launch.jar:?]
        at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:147) ~[quilt-server-launch.jar:?]
        at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:70) ~[quilt-server-launch.jar:?]
        at org.quiltmc.loader.launch.knot.KnotHelper.launchServer(KnotHelper.java:32) ~[quilt-server-launch.jar:?]
        at net.fabricmc.loader.launch.knot.KnotServer.main(KnotServer.java:23) ~[quilt-server-launch.jar:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
        at net.fabricmc.loader.launch.server.FabricServerLauncher.main(FabricServerLauncher.java:62) ~[quilt-server-launch.jar:?]
Caused by: java.lang.IllegalArgumentException: The requested compatibility level JAVA_17 could not be set. Level is not supported by the active JRE or ASM version (Java 17.0, ASM 9.0 (ASM10_EXPERIMENTAL))
        at org.spongepowered.asm.mixin.MixinEnvironment.setCompatibilityLevel(MixinEnvironment.java:1570) ~[quilt-server-launch.jar:?]
        at org.spongepowered.asm.mixin.transformer.MixinConfig.initCompatibilityLevel(MixinConfig.java:557) ~[quilt-server-launch.jar:?]
        at org.spongepowered.asm.mixin.transformer.MixinConfig.postInit(MixinConfig.java:502) ~[quilt-server-launch.jar:?]
        at org.spongepowered.asm.mixin.transformer.MixinConfig.onLoad(MixinConfig.java:430) ~[quilt-server-launch.jar:?]
        at org.spongepowered.asm.mixin.transformer.MixinConfig.create(MixinConfig.java:1293) ~[quilt-server-launch.jar:?]
        at org.spongepowered.asm.mixin.transformer.Config.create(Config.java:148) ~[quilt-server-launch.jar:?]
        at org.spongepowered.asm.mixin.Mixins.createConfiguration(Mixins.java:100) ~[quilt-server-launch.jar:?]
        at org.spongepowered.asm.mixin.Mixins.addConfiguration(Mixins.java:87) ~[quilt-server-launch.jar:?]
        at net.fabricmc.loader.launch.common.FabricMixinBootstrap.init(FabricMixinBootstrap.java:111) ~[quilt-server-launch.jar:?]
        at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:147) ~[quilt-server-launch.jar:?]
        at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:70) ~[quilt-server-launch.jar:?]
        at org.quiltmc.loader.launch.knot.KnotHelper.launchServer(KnotHelper.java:32) ~[quilt-server-launch.jar:?]
        at net.fabricmc.loader.launch.knot.KnotServer.main(KnotServer.java:23) ~[quilt-server-launch.jar:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
        at net.fabricmc.loader.launch.server.FabricServerLauncher.main(FabricServerLauncher.java:62) ~[quilt-server-launch.jar:?]
TheEpicBlock commented 2 years ago

The org.quiltmc.loader.impl.launch.server.QuiltServerLauncher appears to be a bug in the installer. The invalid signature issue I've had myself with regular fabric too, not sure what causes that. The mixin error is weird, isn't it supposed to be ASM 9.2? Maybe the ASM version is detected wrongly, not sure.

Edit: looking at the asm lib inside quilt-server-launch.jar using javap using the same method Mixin uses here it appears to be 9.0? This might also very well be Mixin that's using a borked way of getting the version.

TheGlitch76 commented 2 years ago

I have fixed the first two parts of your issue in the latest commit.

As for the last issue, it's due to the approach originally taken by the installer to create the quilt-server-installer being inadequate for Mixin. It completely erases the META-INF of all of Loader's libraries (because it's extremely naively merging them into one jar), which breaks a Mixin assumption that it can read ASM's meta-inf to find the current ASM version.

This will have to wait a couple days to be fixed by me, but, as always, i'd love it if someone could find a way to tackle it themselves.

Khikki commented 2 years ago

Good afternoon, can you tell me if the fix will be uploaded to the site? The problem is current.

tennox commented 2 years ago

Possible workaround: use CLI method as described here

jschenke488 commented 2 years ago

I got the server to work by first running java -cp quilt-server-launch.jar org.quiltmc.loader.impl.launch.server.QuiltServerLauncher, then stopping the server, after which it could be launched normally.