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

Minecraft 1.18.2模组运行报java.lang.ClassNotFoundException求助

问题:Minecraft 1.18.2模组加入世界后服务器崩溃,出现ClassNotFoundException: com.mysql.cj.exceptions.CJException

我正在开发Minecraft 1.18.2版本的模组,构建过程无报错,但尝试加入游戏世界后,控制台出现错误信息,服务器几秒后随即崩溃。我使用IntelliJ进行开发,服务器由Minestrator托管,以下是报错日志和build.gradle配置:

报错日志

[16:15:02] [ForkJoinPool.commonPool-worker-8/ERROR] [ne.mi.ev.EventSubclassTransformer/EVENTBUS]: Could not find parent com/mysql/cj/exceptions/CJException for class com/mysql/cj/exceptions/InvalidConnectionAttributeException in classloader jdk.internal.loader.ClassLoaders$AppClassLoader@5a07e868 on thread Thread[ForkJoinPool.commonPool-worker-8,8,SERVER]
[16:15:02] [ForkJoinPool.commonPool-worker-8/ERROR] [ne.mi.ev.EventSubclassTransformer/EVENTBUS]: An error occurred building event handler
java.lang.ClassNotFoundException: com.mysql.cj.exceptions.CJException
at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[?:?] {}
at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[?:?] {}
at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?] {}
at net.minecraftforge.eventbus.EventSubclassTransformer.buildEvents(EventSubclassTransformer.java:62) ~[eventbus-5.0.3.jar%232!/:?] {}
at net.minecraftforge.eventbus.EventSubclassTransformer.transform(EventSubclassTransformer.java:44) ~[eventbus-5.0.3.jar%232!/:?] {}
at net.minecraftforge.eventbus.EventBusEngine.processClass(EventBusEngine.java:21) ~[eventbus-5.0.3.jar%232!/:?] {}
at net.minecraftforge.eventbus.service.ModLauncherService.processClassWithFlags(ModLauncherService.java:20) ~[eventbus-5.0.3.jar%232!/:5.0.3+70+master.d7d405b] {}
at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:88) ~[modlauncher-9.1.3.jar%235!/:?] {}
at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:120) ~[modlauncher-9.1.3.jar%235!/:?] {}
at cpw.mods.modlauncher.TransformingClassLoader.maybeTransformClassBytes(TransformingClassLoader.java:50) ~[modlauncher-9.1.3.jar%235!/:?] {}
at cpw.mods.cl.ModuleClassLoader.readerToClass(ModuleClassLoader.java:113) ~[securejarhandler-1.0.8.jar:?] {}
at cpw.mods.cl.ModuleClassLoader.lambda$findClass$15(ModuleClassLoader.java:219) ~[securejarhandler-1.0.8.jar:?] {}
at cpw.mods.cl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:229) ~[securejarhandler-1.0.8.jar:?] {}
at cpw.mods.cl.ModuleClassLoader.findClass(ModuleClassLoader.java:219) ~[securejarhandler-1.0.8.jar:?] {}
at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:135) ~[securejarhandler-1.0.8.jar:?] {}
at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?] {}
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:176) ~[?:?] {re:classloading}
at java.sql.DriverManager.getConnection(DriverManager.java:681) ~[java.sql:?] {}
at java.sql.DriverManager.getConnection(DriverManager.java:229) ~[java.sql:?] {}
at com.industrialrevolution.industrialmod.utils.Database.connect(Database.java:20) ~[?:?] {re:classloading}
at com.industrialrevolution.industrialmod.utils.Database.lambda$getPlayerUUID$4(Database.java:119) ~[?:?] {re:classloading}
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) [?:?] {}
at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760) [?:?] {}
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) [?:?] {}
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) [?:?] {}
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) [?:?] {re:computing_frames}
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) [?:?] {re:computing_frames}
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) [?:?] {}

build.gradle配置

plugins {
    id 'eclipse'
    id 'idea'
    id 'net.minecraftforge.gradle' version '[6.0,6.2)'
}

group = mod_version
version = mod_group_id

base {
    archivesName = mod_id
}

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

jarJar.enable()

tasks.jarJar.configure { }

minecraft {
    mappings channel: "official", version: minecraft_version
    copyIdeResources = true

    runs {
        configureEach {
            workingDirectory project.file('run')
            property 'forge.logging.markers', 'REGISTRIES'
            property 'forge.logging.console.level', 'debug'

            mods {
                "${mod_id}" {
                    source sourceSets.main
                }
            }
        }

        client {
            property 'forge.enabledGameTestNamespaces', mod_id
        }

        server {
            property 'forge.enabledGameTestNamespaces', mod_id
            args '--nogui'
        }

        gameTestServer {
            property 'forge.enabledGameTestNamespaces', mod_id
        }

        data {
            workingDirectory project.file('run-data')

            args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
        }
    }
}

sourceSets.main.resources { srcDir 'src/generated/resources' }

repositories {
    maven { url = 'https://maven.tterrag.com/' }
    maven { url = "https://dvs1.progwml6.com/files/maven/" }
    maven { url = "https://modmaven.dev" }
    maven { url 'https://jitpack.io' }
    maven { url 'https://cursemaven.com' }
}

dependencies {
    minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"

    implementation fg.deobf("com.simibubi.create:create-${minecraft_version}:${create_version}:slim") { transitive = false }
    implementation fg.deobf("com.jozufozu.flywheel:flywheel-forge-${minecraft_version}:${flywheel_version}")
    implementation fg.deobf("com.tterrag.registrate:Registrate:MC${minecraft_version}-${registrate_version}")

    compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}:api")
    runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}")

    runtimeOnly "curse.maven:mysql-jdbc-561280:4684944"


}

tasks.named('processResources', ProcessResources).configure {
    var replaceProperties = [
            minecraft_version: minecraft_version, minecraft_version_range: minecraft_version_range,
            forge_version: forge_version, forge_version_range: forge_version_range,
            loader_version_range: forge_version_range,
            mod_id: mod_id, mod_name: mod_name, mod_license: mod_license, mod_version: mod_version,
            mod_authors: mod_authors, mod_description: mod_description,
    ]

    inputs.properties replaceProperties

    filesMatching(['META-INF/mods.toml', 'pack.mcmeta']) {
        expand replaceProperties + [project: project]
    }
}

tasks.named('jar', Jar).configure {
    manifest {
        attributes([
                "Specification-Title": mod_id,
                "Specification-Vendor": mod_authors,
                "Specification-Version": "1",
                "Implementation-Title": project.name,
                "Implementation-Version": project.jar.archiveVersion,
                "Implementation-Vendor": mod_authors,
                "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
        ])
    }

    finalizedBy 'reobfJar'
}

tasks.withType(JavaCompile).configureEach {
    options.encoding = 'UTF-8'
}
解决方案

核心问题是MySQL JDBC驱动的依赖配置错误,导致运行时无法找到com.mysql.cj.exceptions.CJException类。

  1. 修正依赖配置
    将当前的MySQL JDBC依赖从runtimeOnly改为implementation,并添加fg.deobf()处理——Forge模组需要对第三方库进行反混淆才能正常加载:

    implementation fg.deobf("curse.maven:mysql-jdbc-561280:4684944")
    

    也可以直接使用Maven中央仓库的官方驱动,稳定性更高:

    implementation fg.deobf("mysql:mysql-connector-java:8.0.33")
    
  2. 配置JarJar打包驱动
    你的build.gradle启用了jarJar.enable()但未配置,需要让JarJar将MySQL驱动打包到模组Jar中,避免服务器缺少依赖。修改tasks.jarJar.configure块:

    tasks.jarJar.configure {
        from configurations.runtimeClasspath
        include "com/mysql/**"
    }
    
  3. 重新构建部署
    执行gradlew clean build清理旧构建文件并重新打包模组,然后将build/libs目录下生成的Jar文件上传到Minestrator服务器替换旧文件。

  4. 验证数据库连接代码
    确认Database.connect()方法中的MySQL连接字符串、用户名、密码正确,同时检查服务器防火墙是否允许模组连接到MySQL数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:37:33