Gradle离线使用flatDir依赖时compileScala任务报xsbti类缺失错误问询
问题原因
- Gradle Scala插件的编译环境使用独立的类路径,不会读取项目
implementation配置下的依赖。你本地的compiler-interface-1.3.5.jar(包含xsbti.compile.ScalaInstance类)仅被添加到了项目业务依赖中,没有加载到Scala编译器的类路径里,因此触发类不存在异常。 - 依赖版本存在跨大版本冲突:你项目使用的Scala版本为2.13,但当前放入libs目录的
zinc_2.12-1.3.5.jar、util-logging_2.12-1.3.3.jar是适配Scala 2.12的版本,版本不匹配也会导致类加载失败。
解决方案
- 修改build.gradle配置,给Scala编译器单独指定本地依赖
修改你的dependencies闭包,补充Zinc编译器和Scala工具链的本地依赖配置:
repositories { flatDir { dir 'libs' } } dependencies { // 原有项目业务依赖 implementation fileTree(dir: 'libs', includes: ['*.jar']) // 给Zinc Scala编译器配置依赖 zinc fileTree(dir: 'libs', includes: ['zinc_*.jar', 'compiler-interface-*.jar', 'compiler-bridge_*.jar']) // 本地指定Scala编译器与标准库路径 scalaCompiler files('libs/scala-compiler-2.13.6.jar') scalaLibrary files('libs/scala-library-2.13.6.jar') }
- 修复依赖版本冲突
将libs目录下的zinc_2.12-1.3.5.jar、util-logging_2.12-1.3.3.jar替换为适配Scala 2.13的版本:zinc_2.13-1.3.5.jar、util-logging_2.13-1.3.3.jar。 - 清除缓存重新构建
执行以下命令避免缓存干扰:./gradlew clean build --no-daemon
内容的提问来源于stack exchange,提问作者mastery-in-motion
相关产品推荐
相关产品推荐

