如何用shadowJar将依赖编译进Jar?解决类找不到报错
解决ClassNotFoundException: com.xef5000.vigilance.Vigilant的方法
你的问题核心是shadowJar任务未将vigilance、elementa等依赖正确打包进最终Jar,同时需确保代码引用与重定位配置一致,具体修复步骤如下:
步骤1:确认依赖已正确引入
检查build.gradle.kts的dependencies块,确保已添加vigilance、elementa、universalcraft的依赖声明,且scope为implementation(仅该scope的依赖会被shadowJar处理):dependencies { implementation("gg.essential:vigilance:对应版本号") implementation("gg.essential:elementa:对应版本号") implementation("gg.essential:universalcraft:对应版本号") implementation("org.spongepowered:mixin:对应版本号") // 其他项目依赖... }步骤2:修改shadowJar的依赖包含规则
当前shadowJar配置仅包含了mixin依赖,未包含vigilance等核心依赖,需要补充这些依赖的include规则:tasks.shadowJar { archiveClassifier.set("") relocate("gg.essential.vigilance", "com.xef5000.vigilance") relocate("gg.essential.elementa", "com.xef5000.elementa") relocate("gg.essential.universalcraft", "com.xef5000.universalcraft") dependencies { include(dependency("gg.essential:vigilance")) include(dependency("gg.essential:elementa")) include(dependency("gg.essential:universalcraft")) include(dependency("org.spongepowered:mixin")) } }步骤3:验证代码引用的包名
确保代码中所有引用vigilance、elementa类的地方,使用的是重定位后的包名com.xef5000.vigilance.Vigilant,而非原始的gg.essential.vigilance.Vigilant——重定位后原始包名的类不会存在于最终Jar中。步骤4:重新构建并测试
执行./gradlew shadowJar重新生成Jar文件,运行新生成的Jar即可解决类找不到的问题。
内容的提问来源于stack exchange,提问作者xef5000
相关产品推荐
相关产品推荐

