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

Gradle Scala项目配置Zinc 2.12版本遇兼容性错误求助

解决Gradle Scala项目Zinc版本兼容问题

问题分析

你遇到的核心矛盾是:

  • 手动添加zinc_2.12依赖到运行时类路径,导致运行时出现NoClassDefFoundError(Zinc属于编译时工具依赖,不该混入应用运行时类路径)
  • 不指定Zinc版本时,Gradle默认使用的Zinc基于Scala 2.13,与你的Scala 2.12.15版本不兼容

解决方案

不要直接将Zinc添加为应用依赖,而是通过Gradle Scala插件的配置指定Zinc版本,让插件自动管理Zinc及其兼容的依赖集:

修改后的build.gradle内容:

plugins {
    id 'scala'
    id 'application'
}

repositories {
    mavenCentral()
}

// 配置Scala插件使用指定版本的Zinc编译器
scala {
    zincVersion = "1.6.1"
}

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        // 锁定所有org.scala-lang模块到2.12.15
        if (details.requested.group == 'org.scala-lang') {
            details.useVersion '2.12.15'
        }
        // 确保Zinc相关依赖使用Scala 2.12版本
        if (details.requested.group == 'org.scala-sbt' && details.requested.name.startsWith('zinc')) {
            details.useTarget "${details.requested.group}:${details.requested.name.replace('_2.13', '_2.12')}:${details.requested.version}"
        }
    }
}

dependencies {
    implementation 'org.scala-lang:scala-library:2.12.15'
}

application {
    mainClass = 'test.gradle.plugin.App'
}

关键说明

  1. 通过插件配置Zinc版本:使用scala.zincVersion指定版本,插件会自动引入兼容的Zinc依赖,避免手动添加导致的类路径混乱。
  2. 修正Zinc的Scala版本:通过resolutionStrategy将默认的Zinc 2.13版本替换为2.12版本,确保与你的Scala 2.12.15兼容。
  3. 移除手动Zinc依赖:Zinc是编译时工具,不需要作为应用运行时依赖,因此从dependencies中移除。

执行./gradlew clean run即可正常运行项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:25:22