1

我正在使用 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 构建的吗?我在哪里可以找到信息?

4

2 回答 2

4

是的,sbt 0.12.x 是用 2.9x 构建的,所有插件都需要匹配二进制 Scala 版本。

于 2013-02-28T20:04:52.223 回答
2

为了向 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 不需要与之交互。

于 2013-02-28T22:05:59.923 回答