我有一个sbt
Scala 2.12.12 的项目。
使用工作表(REPL),我决定检查 Scala 版本,并输入以下内容:
util.Properties.versionString
令我惊讶的是,我得到了
res7: String = version 2.12.7
知道这怎么可能吗?
编辑1
有没有办法确保 Worksheet 的版本与 sbt 项目中设置的版本相同?我在看错误的价值观吗?
我有一个sbt
Scala 2.12.12 的项目。
使用工作表(REPL),我决定检查 Scala 版本,并输入以下内容:
util.Properties.versionString
令我惊讶的是,我得到了
res7: String = version 2.12.7
知道这怎么可能吗?
有没有办法确保 Worksheet 的版本与 sbt 项目中设置的版本相同?我在看错误的价值观吗?
我不确定 2.12.7 来自哪里,但是如果您将运行类型从 更改REPL
为plain
,工作表将被完全编译,Scala 版本在您的build.sbt
.
简单的评估模型在评估表达式之前一次性编译整个工作表,而 REPL 评估模型在移动到下一个之前评估每个表达式。
这是您配置的地方:
这是结果:
有没有办法确保 Worksheet 的版本与 sbt 项目中设置的版本相同?我在看错误的价值观吗?
工作表中使用的 scala 的实际版本是 2.12.12(或模块中使用的任何版本)。您可以通过在工作表中使用某些特定于 2.13.3 的语法来验证这一点,例如 val x: 42 = 42。
知道这怎么可能吗?
util.Properties.versionString 返回 2.12.7 的原因是我们的类加载器中的一个错误(类似于 SCL-9229)。versionString 搜索 library.propertis 资源并从那里读取版本字符串。由于该错误,Scala Plugins 本身的 scala 库(2020.2 中的 2.12.7)的资源泄漏到了 REPL 实例。该错误已确定,正在修复中。