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

Debian环境下Github源码构建Axelor失败:JVM版本不兼容求助

解决Axelor构建JVM版本不匹配问题

核心问题

:modules:axelor-supplier-portal模块指定JDK8编译,当前环境使用JDK11,导致依赖变体不匹配,war任务无法解析依赖。

可行解决方案

1. 单独为指定模块配置JDK8编译

修改项目根目录的build.gradle,添加子模块专属编译配置:

subprojects {
    if (project.name == 'axelor-supplier-portal') {
        tasks.withType(JavaCompile) {
            sourceCompatibility = '1.8'
            targetCompatibility = '1.8'
            // 替换为你的本地JDK8路径
            options.forkOptions.javaHome = file('/usr/lib/jvm/java-8-openjdk-amd64')
        }
        // 若模块包含测试任务,同步指定JDK8
        tasks.withType(Test) {
            javaLauncher = javaToolchains.launcherFor {
                languageVersion = JavaLanguageVersion.of(8)
            }
        }
    }
}

或者直接修改modules/axelor-supplier-portal/build.gradle:

java {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}

tasks.withType(JavaCompile) {
    options.fork = true
    options.forkOptions.javaHome = file('/path/to/your/jdk8')
}

2. 移除不需要的模块(如果业务允许)

如果你的场景不需要供应商门户模块,直接在根目录settings.gradle中注释/删除对应的模块引用:

// include ':modules:axelor-supplier-portal'

之后重新执行构建命令。

3. 用Gradle工具链统一管理多版本JDK

若Gradle版本≥6.7,可通过工具链自动适配不同模块的JDK需求,无需手动指定路径:

// 根build.gradle全局配置
java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(11)
    }
}

subprojects {
    if (project.name == 'axelor-supplier-portal') {
        java {
            toolchain {
                languageVersion = JavaLanguageVersion.of(8)
            }
        }
    }
}

Gradle会自动检测本地JDK,若缺失可配置自动下载(需开启对应权限)。

4. 临时切换全局JDK版本构建

如果整个项目可兼容JDK8,临时切换环境变量后重新构建:

# Linux/macOS
export JAVA_HOME=/path/to/jdk8
./gradlew -x test build

# Windows(PowerShell)
$env:JAVA_HOME = "C:\path\to\jdk8"
./gradlew -x test build

内容的提问来源于stack exchange,提问作者Richard Andrew Slabbert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:51:06