我正在阅读Play for Scala: Covers Play 2Peter Hilton(出版商:Manning)的书,并试图坚持他们在书中概述的版本(Play 2.1.1版).
我下载了新的IntelliJ IDEA 14 CE应用并安装了它.我目前正在导入该项目,但它失败了,因为它想要一个0.12.4或更高版本的sbt.

这个问题发生在前一天的13,但我没有时间解决它,所以请,没有建议回到13 :)
这是问题的关键:当我sbt --version在CLI上键入时,它打印出sbt launcher version 0.13.6.我有一个"更大"的版本,但看起来IDEA无法识别这一点.
为了指定我自己的SBT启动程序JAR,我将自定义启动程序(在IDEAs全局设置中)指向了一个/usr/local/Cellar/sbt/0.13.6/libexec/sbt-launch.jar,但构建也失败并出现相同的错误.
正如您可能已经猜到的那样,我使用Homebrew来安装和管理Scala和sbt.当我在二月份开始使用Scala时,我记得我必须在我的设置中进行一些小的调整才能让IDEA找到Scala,但我的IDEA 14版本非常新鲜 - 我没有导入任何以前的设置.我下载了Scala和sbt插件,看起来在粗略查看和创建新测试项目后正确配置.
以下是我无法理解的内容:首先,最明显的是,为什么满足所谓要求(0.12.4+)的sbt版本会因版本0.13而失败.*?
第二,与IDEA捆绑的sbt是否也大于这个版本?在我的系统中某处可能有sbt标志指向早期版本?旁注,我的"酒窖"中有几个版本的sbt,但都超过了0.13.
非常感谢您的帮助!
我不确定这是一个bug还是我不太了解Scala.今天我在REPL中玩了一些列表功能.这是我做的:
首先,我创建了一个列表:
scala> val myList = List(1.0, 2.0, 3.0)
myList: List[Double] = List(1.0, 2.0, 3.0)
Run Code Online (Sandbox Code Playgroud)
接下来,我通过添加另一个double来创建另一个列表:
scala> val newMyList = 4.0 :: myList
newMyList: List[Double] = List(4.0, 1.0, 2.0, 3.0)
Run Code Online (Sandbox Code Playgroud)
现在,当我在newMyList上请求productArity(List.productArity)时:
scala> print(newMyList.productArity)
2
Run Code Online (Sandbox Code Playgroud)
它似乎仍然以不同于其他列表的方式处理第一个列表.这是一个预期的行为还是一个错误?
scala> print(newMyList.productElement(0))
4.0
scala> print(newMyList.productElement(1))
List(1.0, 2.0, 3.0)
Run Code Online (Sandbox Code Playgroud)
注意,我在尝试访问高于0的元素时得到java.lang.IndexOutOfBoundsException,1应该返回2.0,而3应该返回3.0,对吧?