【问题标题】:Error: scalac: error while loading package, Scala signature package has wrong version; expected 5.0, found 5.2 in package.class错误:scalac:加载包时出错,Scala签名包版本错误;预期为 5.0,在 package.class 中找到 5.2
【发布时间】:2020-01-27 04:03:02
【问题描述】:

我有一个 java & scala 项目,我正在为其更新 jars。

我换掉了akka-camel_2.11.jar 并将其替换为 jar akka-camel_2.13-2.5.25.jar,现在我在尝试在 Intellij 中构建时看到标题中显示的错误。

scala signature 是什么? package.class 是什么? 我如何编辑这些以便我的项目可以使用这个更新的 jar 构建?

【问题讨论】:

  • 您不应该更新您不了解其技术的项目的依赖项版本。因为 Scala 不保证它们的主要版本之间的二进制兼容性,所以 Scala 库必须为他们想要支持的每个 Scala 主要版本重新编译和重新发布,并且 Scala 版本被添加到 jar 的名称中,因此 akka-camel_2.11 意味着编译该依赖项的 Scala 版本是 Scala 2.11,当您将其更改为 akka-camel_2.13 时,您会破坏二进制兼容性,即 scala signature
  • 此外,将 Scala 版本手动放入依赖项是一种不好的做法。如果项目使用 SBT 你应该在声明依赖时使用%%,所以它使用正确的。如果您使用的是 MavenGradle,则应始终引用包含正确版本的变量。

标签: scala intellij-idea


【解决方案1】:

当您有同一个 SDK 的多个版本的依赖项时,它会显示此错误 我也遇到过这个问题。 我的 scala 项目具有以下依赖项
org.scala-lang:scala-library.2.11.0 [以及] org.scala-lang:scala-library.2.7.0

所以这会导致与签名的混淆。

删除添加的库之一。 在 intellij 想法中 文件 -> 项目结构 -> 库选项卡 -> 滚动并搜索额外添加的库 -> 按对话框左上方的“-”图标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-13
    • 2016-07-20
    • 1970-01-01
    • 2017-02-14
    • 2023-04-01
    • 2016-05-29
    • 2018-06-23
    • 2016-01-15
    相关资源
    最近更新 更多