我正在将应用程序升级到 scala 版本 2.12。该应用程序使用的是另一个团队在 scala 2.11 中开发的库。
这是我更新的文件 build.sbt 代码。它使用库“sdp-commons-monitoring_2.11”
import com.typesafe.sbt.SbtNativePackager.autoImport.NativePackagerHelper._
import sbt.{Artifact, Credentials, Defaults, Level, addArtifact}
lazy val commonSettings = Seq(
scalaVersion := "2.12.15",
organization := "com.pi.isg.ingest"
)
name := "ingest-tool"
libraryDependencies += "com.pi.isg.sdp-commons" % "sdp-commons-monitoring_2.11" % "11.1.9" excludeAll(
ExclusionRule(organization = "org.json4s"),
ExclusionRule(organization = "org.scala-lang"),
ExclusionRule(organization = "io.spray"),
ExclusionRule(organization = "org.slf4j"),
ExclusionRule(organization = "ch.qos.logback"),
ExclusionRule(organization = "com.amazonaws"),
ExclusionRule(organization = "com.typesafe.akka"),
ExclusionRule(organization = "com.fieldstreams.dispatcher"),
ExclusionRule(organization = "com.pi.fieldstreams.persistence"),
ExclusionRule(organization = "com.pi.isg.sdp-commons", name = "sdp-commons-common-persistence_2.11"),
ExclusionRule(organization = "com.pi.isg.sdp-commons", name = "sdp-commons-serialization_2.11")
)
Run Code Online (Sandbox Code Playgroud)
运行应用程序时,它抛出错误“java.lang.NoClassDefFoundError:scala/Product$class sbt.ForkMain$ForkError:java.lang.NoClassDefFoundError:scala/Product$class”。看来是兼容性版本问题。有什么方法可以在 build.sbt 中进行配置,以便我的应用程序使用 scala 版本 2.12 运行,而 lib 则使用 scala 版本 2.11 运行?
目前,开发该库的团队还没有计划将其库升级到新版本。
问候,
正如评论中提到的:Scala 2 次要版本(其中“次要”用于一般 semver 含义:)major.minor.patch不是二进制兼容的。
因此,例如,使用 Scala 2.11 编译的库不能在 Scala 2.12 项目中使用。
Scala 3 开始改变这种情况:
请参阅有关此的更多文档:
| 归档时间: |
|
| 查看次数: |
607 次 |
| 最近记录: |