Minecraft 1.19.2模组集成Twitch4J时类找不到问题求助
解决Forge 1.19.2模组中Twitch4J依赖打包后找不到类的问题
出现com.github.twitch4j.TwitchClientBuilder找不到的问题,本质是Shadow插件没有正确将Twitch4J及其依赖打包进模组Jar,或者Forge的类加载器无法识别未重定位的第三方类。按以下步骤排查修复:
1. 修正Shadow插件的Gradle配置
Forge的Gradle构建体系有特殊的依赖处理逻辑,必须明确配置Shadow要打包的依赖,并对第三方包进行重定位(避免和其他模组或Forge自带库冲突)。
在你的build.gradle中添加或调整Shadow相关配置:
plugins { id 'net.minecraftforge.gradle' version '5.1.+' id 'com.github.johnrengelman.shadow' version '7.1.2' // 选择与Forge 1.19.2兼容的Shadow版本 } // ... 保留原有的Forge配置(如minecraft、dependencies块) ... // 配置ShadowJar任务 shadowJar { // 明确包含Twitch4J核心及你用到的子模块 dependencies { include(dependency('com.github.twitch4j:twitch4j:1.19.0')) // 替换为你使用的Twitch4J版本 include(dependency('com.github.twitch4j:twitch4j-chat:1.19.0')) // 根据你的需求添加其他子模块,如twitch4j-auth、twitch4j-common等 } // 重定位Twitch4J的包到你的模组包名下,避免类路径冲突 relocate 'com.github.twitch4j', 'com.yourmodid.twitch4j' // 替换yourmodid为你的模组ID relocate 'okhttp3', 'com.yourmodid.okhttp3' // 可选:重定位Twitch4J依赖的okhttp,避免和Forge版本冲突 relocate 'com.fasterxml.jackson', 'com.yourmodid.jackson' // 可选:重定位jackson依赖 // 设置ShadowJar的输出后缀 archiveClassifier.set('shadow') } // 让build任务依赖ShadowJar,确保打包时生成带依赖的Jar build.dependsOn(shadowJar) // 禁用默认Jar任务,让Forge使用ShadowJar作为输出 jar { enabled = false from shadowJar.archiveFile }
2. 检查IntelliJ运行配置
IDEA默认运行的可能是未包含依赖的普通模组Jar,需修改运行配置:
- 打开Run/Debug Configurations
- 找到你的Minecraft Client运行配置
- 在"Mods"选项卡中,移除原模组Jar,添加
build/libs目录下带-shadow后缀的Jar文件 - 保存配置后重新启动客户端
3. 验证打包后的Jar内容
用压缩工具打开build/libs下的ShadowJar文件,检查是否存在以下内容:
- 重定位后的包路径(如
com/yourmodid/twitch4j) - Twitch4J的核心类(如
TwitchClientBuilder.class)
如果没有这些内容,说明Shadow配置未生效,需重新检查dependencies块中的依赖是否正确引入,或是否有其他Gradle规则排除了Twitch4J依赖。
4. 排查依赖冲突或排除问题
执行./gradlew dependencies命令查看依赖树,确认:
- Twitch4J及其子模块没有被标记为
exclude - 传递依赖(如okhttp、jackson)没有被Forge自动排除
若发现依赖被意外排除,可在dependencies块中手动添加并强制包含:
dependencies { // ... 原有的Forge依赖 ... implementation('com.github.twitch4j:twitch4j-chat:1.19.0') { exclude group: 'some.conflicting.group' // 仅排除确实冲突的依赖,不要盲目操作 } }
内容的提问来源于stack exchange,提问作者Alerto
相关产品推荐
相关产品推荐

