You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 17:42:25