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

如何确保Gradle中的依赖与OpenJDK 15兼容?

适配OpenJDK 15的GraalVM Gradle项目解决方案

1. GraalVM JS 22.2.0 与OpenJDK 15兼容吗?

不兼容。GraalVM 22.2.x系列的最低要求Java版本是17,你遇到的错误里truffle-api-22.2.0.jar的module-info是用Java17编译的(class文件版本61.0),而OpenJDK15仅支持到版本59.0,因此这个版本的依赖无法在JDK15环境下运行。

2. 解决步骤

(1)降级GraalVM相关依赖版本

选择GraalVM 21.3.x系列,该版本最低支持Java11,完全兼容JDK15。修改build.gradle中的依赖配置:

dependencies {
    implementation 'org.mongodb:mongodb-driver-sync:4.7.1'
    // 替换为兼容JDK15的版本
    implementation 'org.graalvm.js:js:21.3.2'
    implementation 'org.graalvm.js:js-scriptengine:21.3.2'
    implementation 'com.google.code.gson:gson:2.9.0'
    testImplementation 'junit:junit:4.13.2'
    // 取消注释并同步版本
    implementation "org.graalvm.sdk:graal-sdk:21.3.2"
    implementation "org.graalvm.truffle:truffle-api:21.3.2"
}

(2)强制锁定依赖版本(可选)

如果项目中有其他依赖间接引入了高版本的truffle-api或GraalVM组件,添加force参数强制锁定到兼容版本:

dependencies {
    // 其他依赖...
    implementation('org.graalvm.truffle:truffle-api:21.3.2') {
        force = true
    }
    implementation('org.graalvm.sdk:graal-sdk:21.3.2') {
        force = true
    }
}

(3)验证依赖树

执行以下Gradle命令检查依赖,确保没有高版本组件混入:

./gradlew dependencyInsight --dependency truffle-api
./gradlew dependencyInsight --dependency graal-sdk

(4)调整编译配置(可选)

你的compileJava任务中添加了--module-path参数,如果项目不是模块化应用,可以考虑移除这部分配置,避免模块兼容性问题:

// 移除原有的compileJava配置,或保留但确保依赖模块兼容JDK15
// compileJava{
//     doFirst {
//         options.compilerArgs = [
//                 '--module-path', classpath.asPath,
//         ]
//     }
// }

3. 修改后的完整build.gradle配置

buildscript {
    repositories {
        mavenCentral()
    }
}
plugins{
    id "java"
    id 'org.hidetake.ssh' version '2.7.1'
}
apply plugin: 'application'
apply plugin: 'distribution'

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

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.mongodb:mongodb-driver-sync:4.7.1'
    implementation 'org.graalvm.js:js:21.3.2'
    implementation 'org.graalvm.js:js-scriptengine:21.3.2'
    implementation 'com.google.code.gson:gson:2.9.0'
    testImplementation 'junit:junit:4.13.2'
    implementation "org.graalvm.sdk:graal-sdk:21.3.2"
    implementation "org.graalvm.truffle:truffle-api:21.3.2"
}

jar {
    archiveName ="mongojdbc${version}.jar"
    manifest {
        attributes 'Main-Class': 'com.wisecoders.dbschema.mongodb.JdbcDriver'
        attributes 'Class-Path': configurations.runtimeClasspath.files.collect { it.getName() }.join(' ')
        attributes 'Specification-Version': "$version"
        attributes 'Specification-Vendor': "Wise Coders"
        attributes 'Implementation-Vendor-Id': "dbschema.com"
        attributes 'Implementation-Vendor': "Wise Coders"
        attributes 'Implementation-Version': new Date().format( 'yyMMdd' )
    }
}


task zip(type: Zip, dependsOn:['clean','jar']) {
    archiveFileName.set 'MongoDbJdbcDriver.zip'
    from configurations.runtimeClasspath.allArtifacts.files
    from configurations.runtimeClasspath
    from "build/libs" include "*.jar"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:39:24