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

Forge Java模组开发:mysql-connector-java依赖打包后失效求助

Forge模组打包后无法连接MySQL的问题求助

我已经花了两周时间尝试为我的Forge Java模组添加mysql-connector-java依赖,目的是实现客户端与SQL服务器的连接。在IDE开发环境中,代码可以正常连接服务器并执行数据库操作,但打包后的客户端完全无法实现该功能。

我尝试过使用com.github.johnrengelman.shadow插件将依赖打包进模组Jar包,但操作后要么没有效果,要么出现错误;多次执行shadowJar命令(搭配不同选项)也没能解决问题。

以下是我的相关配置、错误日志和测试代码:

gradle.build 配置

plugins {
    id 'java'
    id 'net.minecraftforge.gradle' version '5.1.+'
    id 'com.github.johnrengelman.shadow' version '7.1.2'
}

version = '1.0'
group = 'com.example.mymod'
archivesBaseName = 'mymod-1.19.2'

java.toolchain.languageVersion = JavaLanguageVersion.of(17)

minecraft {
    mappings channel: 'official', version: '1.19.2'

    runs {
        client {
            workingDirectory project.file('run')
            property 'forge.logging.markers', 'REGISTRIES'
            property 'forge.logging.console.level', 'debug'
            mods {
                mymod {
                    source sourceSets.main
                }
            }
        }
    }
}

repositories {
    mavenCentral()
}

dependencies {
    minecraft 'net.minecraftforge:forge:1.19.2-43.2.0'
    implementation 'mysql:mysql-connector-java:8.0.33'
}

shadowJar {
    relocate 'com.mysql', 'com.example.mymod.libs.mysql'
}

错误日志

Exception in thread "Render thread" java.lang.NoClassDefFoundError: com/mysql/jdbc/Driver
    at com.example.mymod.MyMod.lambda$onClientTick$0(MyMod.java:38)
    at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:247)
    at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:239)
    at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302)
    at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283)
    at net.minecraftforge.fml.LogicalSidedProvider$SideRunner.run(LogicalSidedProvider.java:266)
    at net.minecraftforge.fml.LogicalSidedProvider$SideRunner.run(LogicalSidedProvider.java:254)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    ... 12 more

测试代码

try {
    Class.forName("com.mysql.jdbc.Driver");
    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "User", "Password");
    String sql = "INSERT INTO chat_messages (Test) VALUES (?)";
    PreparedStatement statement = connection.prepareStatement(sql);
    statement.setString(1, Test);
    statement.executeUpdate();
    statement.close();
} catch (SQLException e) {
    System.out.println(e.getMessage());
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

希望各位能给出解决思路或具体的配置修改方案,感谢帮助。

内容的提问来源于stack exchange,提问作者Louis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:59:56