我正在使用 sbtantlr 插件并将其调整为使用 antlr v3.5。它曾经在 scala 2.9.2 上运行良好。
今天我将我的 scala 升级到 2.10.0。
我在 2.10.0 中编译了插件,并将插件 'sbtantlr.jar' 放在我的主要 scala 项目的 'lib' 目录中。
SBT 停止处理此错误消息:
检测到插件中的二进制不兼容。
我将编译器版本恢复为 2.9.2,它工作正常。
是因为 SBT(官方二进制版本)是用 2.9 构建的吗?我在哪里可以找到信息?
是的,sbt 0.12.x 是用 2.9x 构建的,所有插件都需要匹配二进制 Scala 版本。
为了向 Yann 所说的添加更多信息,Scala 仅保证次要版本之间的兼容性。也就是说,任何 2.8.x 版本编译的代码都与任何其他 2.8.x 版本编译的代码兼容,但 2.8.x 编译的代码不能与 2.9.x 版本编译的代码兼容。
现在,SBT 是一个 Scala 应用程序,插件和构建配置都是它的库。SBT 0.12.x 是使用 Scala 2.9.x 编译的,因此所有插件和项目构建配置也必须使用 Scala 2.9.x 编译。
项目本身可以用任何版本编译,因为 SBT 不需要与之交互。