Fabric 1.19.3模组在启动器崩溃但IDE运行正常求助
问题:Fabric模组导出shadowJar后崩溃,IDE运行正常
我开发了一个集成Selenium和Jsoup的Minecraft Fabric模组,在IDE里运行完全没问题,但导出成shadowJar放到模组文件夹后,Minecraft就会以退出代码1崩溃。我是Fabric模组开发新手,求帮忙。
build.gradle配置
plugins { id 'fabric-loom' version '1.1-SNAPSHOT' id 'maven-publish' id 'com.github.johnrengelman.shadow' version '7.1.2' } sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 archivesBaseName = project.archives_base_name version = project.mod_version group = project.maven_group repositories { // Add repositories to retrieve artifacts from in here. // You should only use this when depending on other mods because // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. // See https://docs.gradle.org/current/userguide/declaring_repositories.html // for more information about repositories. } dependencies { implementation "org.jsoup:jsoup:1.15.4" implementation "org.seleniumhq.selenium:selenium-java:4.8.1" // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:0.74.0+1.19.3" // Uncomment the following line to enable the deprecated Fabric API modules. // These are included in the Fabric API production distribution and allow you to update your mod to the latest modules at a later more convenient time. modImplementation "net.fabricmc.fabric-api:fabric-api-deprecated:${project.fabric_version}" }
Minecraft崩溃日志
Error loading companion plugin class [net.fabricmc.fabric.impl.client.indigo.IndigoMixinConfigPlugin] for mixin config [fabric-renderer-indigo.mixins.json]. The plugin may be out of date: ClassCastException:class net.fabricmc.fabric.impl.client.indigo.IndigoMixinConfigPlugin cannot be cast to class org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin (net.fabricmc.fabric.impl.client.indigo.IndigoMixinConfigPlugin is in unnamed module of loader net.fabricmc.loader.impl.launch.knot.KnotClassLoader @429bd883; org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin is in unnamed module of loader 'app') java.lang.ClassCastException: class net.fabricmc.fabric.impl.client.indigo.IndigoMixinConfigPlugin cannot be cast to class org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin (net.fabricmc.fabric.impl.client.indigo.IndigoMixinConfigPlugin is in unnamed module of loader net.fabricmc.loader.impl.launch.knot.KnotClassLoader @429bd883; org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin is in unnamed module of loader 'app') at org.spongepowered.asm.mixin.transformer.PluginHandle.<init>(PluginHandle.java:97) at org.spongepowered.asm.mixin.transformer.MixinConfig.onSelect(MixinConfig.java:708) at org.spongepowered.asm.mixin.transformer.MixinProcessor.selectConfigs(MixinProcessor.java:498) at org.spongepowered.asm.mixin.transformer.MixinProcessor.select(MixinProcessor.java:460) at org.spongepowered.asm.mixin.transformer.MixinProcessor.checkSelect(MixinProcessor.java:438) at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:290) at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234) at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202) at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:422) at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:323) at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:218) at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:112) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:454) at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) 12:36:54.465 Mixin apply for mod fabric-crash-report-info-v1 failed fabric-crash-report-info-v1.mixins.json:SystemDetailsMixin from mod fabric-crash-report-info-v1 -> net.minecraft.util.SystemDetails: org.spongepowered.asm.mixin.transformer.throwables.InvalidMixinException @Shadow method method_37123 in fabric-crash-report-info-v1.mixins.json:SystemDetailsMixin from mod fabric-crash-report-info-v1 was not located in the target class net.minecraft.util.SystemDetails. Using refmap fabric-crash-report-info-v1-refmap.json org.spongepowered.asm.mixin.transformer.throwables.InvalidMixinException: @Shadow method method_37123 in fabric-crash-report-info-v1.mixins.json:SystemDetailsMixin from mod fabric-crash-report-info-v1 was not located in the target class net.minecraft.util.SystemDetails. Using refmap fabric-crash-report-info-v1-refmap.json at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attachSpecialMethod(MixinPreProcessorStandard.java:436) at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attachShadowMethod(MixinPreProcessorStandard.java:412) at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attachMethods(MixinPreProcessorStandard.java:340) at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attach(MixinPreProcessorStandard.java:299) at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.createContextFor(MixinPreProcessorStandard.java:277) at org.spongepowered.asm.mixin.transformer.MixinInfo.createContextFor(MixinInfo.java:1289) at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:292) at org.spongepowered.asm.mixin.transformer.TargetClassContext.apply(TargetClassContext.java:421) at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:403) at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363) at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234) at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202) at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:422) at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:323) at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:218) at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:112) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) at net.minecraft.util.crash.CrashReport.<init>(CrashReport.java:41) at net.minecraft.util.crash.CrashReport.initCrashReport(CrashReport.java:227) at net.minecraft.client.main.Main.main(Main.java:152) at net.minecraft.client.main.Main.main(Main.java:56) at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:461) at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
解决方案
问题根源是ShadowJar插件和Fabric Loom的打包机制冲突,导致类加载器异常。
1. 移除ShadowJar插件
Fabric Loom已经内置第三方依赖打包功能,不需要额外用ShadowJar。直接删掉build.gradle里的Shadow插件配置:
// 删除这一行 id 'com.github.johnrengelman.shadow' version '7.1.2'
2. 调整依赖声明方式
把第三方依赖的implementation改成include,Loom会自动将这些依赖打包到模组Jar中,且不会重复打包Fabric或Minecraft核心类:
dependencies { include "org.jsoup:jsoup:1.15.4" include "org.seleniumhq.selenium:selenium-java:4.8.1" // 其余依赖保持不变 }
3. 处理Selenium额外依赖
Selenium包含大量平台专属驱动(如ChromeDriver),直接打包会导致Jar体积过大。建议:
- 只打包核心的
selenium-java,驱动程序让用户自行安装或通过模组动态下载 - 若必须打包驱动,需配置Loom只包含目标平台的驱动版本,避免打包全平台文件
4. 重新打包模组
执行Gradle的build任务,生成的有效模组Jar在build/libs/目录下,文件名格式为[模组名]-[版本].jar,不要使用ShadowJar生成的文件。
崩溃原因说明
ShadowJar会把所有依赖(包括Fabric相关类)全部打包到Jar中,导致Minecraft加载时出现类加载器冲突——同一个类(比如Mixin接口)被两个不同类加载器加载,从而抛出ClassCastException。而Loom的打包机制只会打包你的模组代码和指定第三方依赖,避免了重复类加载问题。
内容的提问来源于stack exchange,提问作者Esyuran
相关产品推荐
相关产品推荐

