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

Gradle项目运行时出现org.jooq.impl.DSL类未找到异常求助

解决java.lang.NoClassDefFoundError: org/jooq/impl/DSL异常

问题原因

你执行./gradlew build生成的jar是瘦jar(thin jar),仅包含项目自身的编译代码,未打包任何依赖库(如jOOQ、DCM等)。使用java -jar启动时,JVM无法找到这些依赖类,因此抛出该异常。

解决方案:生成包含所有依赖的胖jar(Fat Jar)

最便捷的方式是通过Gradle的shadow插件生成包含所有依赖的胖jar,操作步骤如下:

1. 修改build.gradle配置

添加shadow插件并完善配置:

plugins {
    id 'java'
    // 引入shadow插件,版本可根据Gradle版本适配调整
    id 'com.github.johnrengelman.shadow' version '7.1.2'
}

// 统一管理依赖版本,避免硬编码
ext {
    guavaVersion = '29.0-jre'
    junitJupiterVersion = '5.7.2'
    junitPioneerVersion = '1.4.2'
}

jar {
    manifest {
        attributes 'Main-Class': 'com.rebalancer.RebalancerExperiment'
    }
}

// 配置shadowJar任务,生成包含所有依赖的胖jar
shadowJar {
    mergeServiceFiles()
    manifest {
        attributes 'Main-Class': 'com.rebalancer.RebalancerExperiment'
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'com.vmware.dcm:dcm:0.15.0'
    implementation "org.jooq:jooq:3.13.1"
    implementation "org.jooq:jooq-meta:3.13.1"
    implementation "com.google.guava:guava:${guavaVersion}"
    implementation "org.junit.jupiter:junit-jupiter:${junitJupiterVersion}"
    implementation "org.junit-pioneer:junit-pioneer:${junitPioneerVersion}"
}

// 可选配置:执行build时自动生成胖jar
build.dependsOn(shadowJar)

2. 构建并运行胖jar

  • 执行构建命令:
    ./gradlew shadowJar
    
  • 生成的胖jar位于build/libs/目录下,文件名格式为{项目名}-all.jar(例如rebalancer-all.jar)
  • 启动应用:
    java -jar build/libs/{项目名}-all.jar
    

补充说明

  • 你通过./gradlew dependencies确认的依赖版本一致是正确的,版本冲突并非本次异常的诱因。
  • 原build.gradle中未定义guavaVersion等变量,添加ext块统一管理版本可避免潜在的构建报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:29:49