我有一个使用 sbt 版本 1.10.6 的 sbt 项目,我已将其设置为交叉编译到 2.13.x 和 3.1.x scala 版本。
lazy val scala313 = "3.1.3"
lazy val scala2138 = "2.13.8"
lazy val supportedScalaVersions = List(scala313, scala2138)
然后我为发布明确设置此值:
ThisBuild / scalaVersion := "3.1.3"
然后我在我的 build.sbt 中设置了这个集合,它正在构建一个多模块 sbt 项目。对于其中一个模块,我有以下内容:
lazy val ocppMessages =
module("ocpp-messages")
.settings(
name := """ocpp-messages""",
crossScalaVersions := supportedScalaVersions,
publish / skip := false
)
当我运行构建时,出现以下错误:
error:
bad constant pool index: 0 at pos: 48462cremental 0s
while compiling: <no file>/ doc 0s
during phase: globalPhase=<no phase>, enteringPhase=<some phase>
library version: version 2.13.8
compiler version: version 2.13.8
[error] (ocpp-messages / Compile / compileIncremental) Error compiling the sbt component 'compiler-bridge_2.13'
[error] (ocpp-messages / Compile / doc) Error compiling the sbt component 'compiler-bridge_2.13'
我是否引入了与我的路径中的 Scala 版本(即 Scala 3.2.0 和相关的 sbt 版本)的任何不兼容性?
Scala、Sbt 和 Java 版本存在兼容性问题。将我的 Scala 版本更新到 2.13.11 和 3.4.0(这似乎是 Java 21 的最低要求)后,它起作用了!作为参考,这里是版本兼容性的链接:
https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html