为什么启用 play.PlayScala 插件会导致 "sbt.compiler.EvalException: Type error in expression"?
Why does enabling play.PlayScala plugin lead to "sbt.compiler.EvalException: Type error in expression"?
我正在尝试将 play scala 添加为 build.sbt
中的依赖项:
name := "name"
version := "0.0"
lazy val root = (project in file(".")).enablePlugins(play.PlayScala)
scalaVersion := "2.11.2"
resolvers += Resolver.mavenLocal
organization := "com.suredbits.core"
libraryDependencies ++= {
val sprayV = "1.3.2"
val akkaV = "2.3.8"
Seq(
"org.scalatest" % "scalatest_2.11" % "2.2.0",
"io.spray" %% "spray-can" % sprayV withSources() withJavadoc(),
"io.spray" %% "spray-routing" % sprayV withSources() withJavadoc(),
"io.spray" %% "spray-testkit" % sprayV % "test" withSources() withJavadoc(),
"com.typesafe.akka" %% "akka-actor" % akkaV withSources() withJavadoc(),
"com.typesafe.akka" %% "akka-testkit" % akkaV % "test" withSources() withJavadoc(),
"org.specs2" %% "specs2-core" % "2.4.7-scalaz-7.0.6" % "test" withSources() withJavadoc(),
"org.scalactic" %% "scalactic" % "2.2.1" % "test" withSources() withJavadoc(),
"io.spray" %% "spray-json" % "1.3.0" withSources() withJavadoc(),
"com.github.nscala-time" %% "nscala-time" % "1.6.0" withSources() withJavadoc() ,
"com.novocode" % "junit-interface" % "0.10" % "test" withSources() withJavadoc(),
"ch.qos.logback" % "logback-classic" % "0.9.28" % "test" withSources() withJavadoc(),
"org.slf4j" % "slf4j-nop" % "1.6.4" withSources() withJavadoc()
)
}
testOptions += Tests.Argument(TestFrameworks.JUnit, "-q", "-v", "-s", "-a")
parallelExecution in Test := false
logBuffered := false
scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature")
这是我的 plugins.sbt
:
// The Typesafe repository
resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/"
//workaround for enablePlugins error in sbt
//dependencyOverrides += "org.scala-sbt" % "sbt" % "0.13.7"
//Play sbt plugin for Play projects
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.6")
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.4.0")
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")
最后这是我的 build.properties
sbt.version=0.13.1
我已经阅读了很多试图解决这个问题的 Whosebug 帖子,包括删除 ~/.sbt
目录,然后再次 运行 sbt
,但这没有用。
报错信息如下:
lazy val root = (project in file(".")).enablePlugins(play.PlayScala)
^
sbt.compiler.EvalException: Type error in expression
at sbt.compiler.Eval.checkError(Eval.scala:384)
at sbt.compiler.Eval.compileAndLoad(Eval.scala:183)
at sbt.compiler.Eval.evalCommon(Eval.scala:152)
at sbt.compiler.Eval.evalDefinitions(Eval.scala:122)
at sbt.EvaluateConfigurations$.evaluateDefinitions(EvaluateConfigurations.scala:272)
at sbt.EvaluateConfigurations$.evaluateSbtFile(EvaluateConfigurations.scala:110)
at sbt.Load$.sbt$Load$$loadSettingsFile(Load.scala:710)
at sbt.Load$$anonfun$sbt$Load$$memoLoadSettingsFile.apply(Load.scala:715)
at sbt.Load$$anonfun$sbt$Load$$memoLoadSettingsFile.apply(Load.scala:714)
at scala.Option.getOrElse(Option.scala:120)
at sbt.Load$.sbt$Load$$memoLoadSettingsFile(Load.scala:714)
at sbt.Load$$anonfun$loadFiles.apply(Load.scala:721)
at sbt.Load$$anonfun$loadFiles.apply(Load.scala:721)
at scala.collection.TraversableLike$$anonfun$map.apply(TraversableLike.scala:244)
at scala.collection.TraversableLike$$anonfun$map.apply(TraversableLike.scala:244)
at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.AbstractTraversable.map(Traversable.scala:105)
at sbt.Load$.loadFiles(Load.scala:721)
at sbt.Load$.discoverProjects(Load.scala:732)
at sbt.Load$.discover(Load.scala:545)
at sbt.Load$.loadTransitive(Load.scala:574)
at sbt.Load$.loadProjects(Load.scala:442)
at sbt.Load$.loadUnit(Load.scala:446)
at sbt.Load$$anonfun$$anonfun$apply.apply(Load.scala:281)
at sbt.Load$$anonfun$$anonfun$apply.apply(Load.scala:281)
at sbt.BuildLoader$$anonfun$componentLoader$$anonfun$apply$$anonfun$apply$$anonfun$apply.apply(BuildLoader.scala:91)
at sbt.BuildLoader$$anonfun$componentLoader$$anonfun$apply$$anonfun$apply$$anonfun$apply.apply(BuildLoader.scala:90)
at sbt.BuildLoader.apply(BuildLoader.scala:140)
at sbt.Load$.loadAll(Load.scala:334)
at sbt.Load$.loadURI(Load.scala:289)
at sbt.Load$.load(Load.scala:285)
at sbt.Load$.load(Load.scala:276)
at sbt.Load$.apply(Load.scala:130)
at sbt.Load$.defaultLoad(Load.scala:36)
at sbt.BuiltinCommands$.doLoadProject(Main.scala:481)
at sbt.BuiltinCommands$$anonfun$loadProjectImpl.apply(Main.scala:475)
at sbt.BuiltinCommands$$anonfun$loadProjectImpl.apply(Main.scala:475)
at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:58)
at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:58)
at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:60)
at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:60)
at sbt.Command$.process(Command.scala:92)
at sbt.MainLoop$$anonfun$$anonfun$apply.apply(MainLoop.scala:98)
at sbt.MainLoop$$anonfun$$anonfun$apply.apply(MainLoop.scala:98)
at sbt.State$$anon.process(State.scala:184)
at sbt.MainLoop$$anonfun.apply(MainLoop.scala:98)
at sbt.MainLoop$$anonfun.apply(MainLoop.scala:98)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
at sbt.MainLoop$.next(MainLoop.scala:98)
at sbt.MainLoop$.run(MainLoop.scala:91)
at sbt.MainLoop$$anonfun$runWithNewLog.apply(MainLoop.scala:70)
at sbt.MainLoop$$anonfun$runWithNewLog.apply(MainLoop.scala:65)
at sbt.Using.apply(Using.scala:24)
at sbt.MainLoop$.runWithNewLog(MainLoop.scala:65)
at sbt.MainLoop$.runAndClearLast(MainLoop.scala:48)
at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:32)
at sbt.MainLoop$.runLogged(MainLoop.scala:24)
at sbt.StandardMain$.runManaged(Main.scala:53)
at sbt.xMain.run(Main.scala:28)
at xsbt.boot.Launch$$anonfun$run.apply(Launch.scala:57)
at xsbt.boot.Launch$.withContextLoader(Launch.scala:77)
at xsbt.boot.Launch$.run(Launch.scala:57)
at xsbt.boot.Launch$$anonfun$explicit.apply(Launch.scala:45)
at xsbt.boot.Launch$.launch(Launch.scala:65)
at xsbt.boot.Launch$.apply(Launch.scala:16)
at xsbt.boot.Boot$.runImpl(Boot.scala:32)
at xsbt.boot.Boot$.main(Boot.scala:21)
at xsbt.boot.Boot.main(Boot.scala)
[error] sbt.compiler.EvalException: Type error in expression
[error] Use 'last' for the full log.
enablePlugins
在 sbt.Project
中不可用,直到 sbt 0.13.5.
要升级,请在 project/build.properties
中执行以下操作:
sbt.version=0.13.5
不要忘记停止 sbt
并重新开始(否则将无法识别版本更改)。
对于 Play 2.2.x 项目,您将替换
lazy val root = (project in file(".")).enablePlugins(play.PlayScala)
和
play.Project.playScalaSettings
我很确定 Play 2.2.x 使用的 Akka (2.2.x) 版本与您正在使用的版本 (2.3.8) 不兼容。您可能会考虑只使用最新的 Play 2.3.7。如果你选择这条路线,你还需要升级到 sbt 0.13.5(甚至是最新的 0.13.7)。
我正在尝试将 play scala 添加为 build.sbt
中的依赖项:
name := "name"
version := "0.0"
lazy val root = (project in file(".")).enablePlugins(play.PlayScala)
scalaVersion := "2.11.2"
resolvers += Resolver.mavenLocal
organization := "com.suredbits.core"
libraryDependencies ++= {
val sprayV = "1.3.2"
val akkaV = "2.3.8"
Seq(
"org.scalatest" % "scalatest_2.11" % "2.2.0",
"io.spray" %% "spray-can" % sprayV withSources() withJavadoc(),
"io.spray" %% "spray-routing" % sprayV withSources() withJavadoc(),
"io.spray" %% "spray-testkit" % sprayV % "test" withSources() withJavadoc(),
"com.typesafe.akka" %% "akka-actor" % akkaV withSources() withJavadoc(),
"com.typesafe.akka" %% "akka-testkit" % akkaV % "test" withSources() withJavadoc(),
"org.specs2" %% "specs2-core" % "2.4.7-scalaz-7.0.6" % "test" withSources() withJavadoc(),
"org.scalactic" %% "scalactic" % "2.2.1" % "test" withSources() withJavadoc(),
"io.spray" %% "spray-json" % "1.3.0" withSources() withJavadoc(),
"com.github.nscala-time" %% "nscala-time" % "1.6.0" withSources() withJavadoc() ,
"com.novocode" % "junit-interface" % "0.10" % "test" withSources() withJavadoc(),
"ch.qos.logback" % "logback-classic" % "0.9.28" % "test" withSources() withJavadoc(),
"org.slf4j" % "slf4j-nop" % "1.6.4" withSources() withJavadoc()
)
}
testOptions += Tests.Argument(TestFrameworks.JUnit, "-q", "-v", "-s", "-a")
parallelExecution in Test := false
logBuffered := false
scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature")
这是我的 plugins.sbt
:
// The Typesafe repository
resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/"
//workaround for enablePlugins error in sbt
//dependencyOverrides += "org.scala-sbt" % "sbt" % "0.13.7"
//Play sbt plugin for Play projects
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.6")
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.4.0")
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")
最后这是我的 build.properties
sbt.version=0.13.1
我已经阅读了很多试图解决这个问题的 Whosebug 帖子,包括删除 ~/.sbt
目录,然后再次 运行 sbt
,但这没有用。
报错信息如下:
lazy val root = (project in file(".")).enablePlugins(play.PlayScala)
^
sbt.compiler.EvalException: Type error in expression
at sbt.compiler.Eval.checkError(Eval.scala:384)
at sbt.compiler.Eval.compileAndLoad(Eval.scala:183)
at sbt.compiler.Eval.evalCommon(Eval.scala:152)
at sbt.compiler.Eval.evalDefinitions(Eval.scala:122)
at sbt.EvaluateConfigurations$.evaluateDefinitions(EvaluateConfigurations.scala:272)
at sbt.EvaluateConfigurations$.evaluateSbtFile(EvaluateConfigurations.scala:110)
at sbt.Load$.sbt$Load$$loadSettingsFile(Load.scala:710)
at sbt.Load$$anonfun$sbt$Load$$memoLoadSettingsFile.apply(Load.scala:715)
at sbt.Load$$anonfun$sbt$Load$$memoLoadSettingsFile.apply(Load.scala:714)
at scala.Option.getOrElse(Option.scala:120)
at sbt.Load$.sbt$Load$$memoLoadSettingsFile(Load.scala:714)
at sbt.Load$$anonfun$loadFiles.apply(Load.scala:721)
at sbt.Load$$anonfun$loadFiles.apply(Load.scala:721)
at scala.collection.TraversableLike$$anonfun$map.apply(TraversableLike.scala:244)
at scala.collection.TraversableLike$$anonfun$map.apply(TraversableLike.scala:244)
at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.AbstractTraversable.map(Traversable.scala:105)
at sbt.Load$.loadFiles(Load.scala:721)
at sbt.Load$.discoverProjects(Load.scala:732)
at sbt.Load$.discover(Load.scala:545)
at sbt.Load$.loadTransitive(Load.scala:574)
at sbt.Load$.loadProjects(Load.scala:442)
at sbt.Load$.loadUnit(Load.scala:446)
at sbt.Load$$anonfun$$anonfun$apply.apply(Load.scala:281)
at sbt.Load$$anonfun$$anonfun$apply.apply(Load.scala:281)
at sbt.BuildLoader$$anonfun$componentLoader$$anonfun$apply$$anonfun$apply$$anonfun$apply.apply(BuildLoader.scala:91)
at sbt.BuildLoader$$anonfun$componentLoader$$anonfun$apply$$anonfun$apply$$anonfun$apply.apply(BuildLoader.scala:90)
at sbt.BuildLoader.apply(BuildLoader.scala:140)
at sbt.Load$.loadAll(Load.scala:334)
at sbt.Load$.loadURI(Load.scala:289)
at sbt.Load$.load(Load.scala:285)
at sbt.Load$.load(Load.scala:276)
at sbt.Load$.apply(Load.scala:130)
at sbt.Load$.defaultLoad(Load.scala:36)
at sbt.BuiltinCommands$.doLoadProject(Main.scala:481)
at sbt.BuiltinCommands$$anonfun$loadProjectImpl.apply(Main.scala:475)
at sbt.BuiltinCommands$$anonfun$loadProjectImpl.apply(Main.scala:475)
at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:58)
at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:58)
at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:60)
at sbt.Command$$anonfun$applyEffect$$anonfun$apply.apply(Command.scala:60)
at sbt.Command$.process(Command.scala:92)
at sbt.MainLoop$$anonfun$$anonfun$apply.apply(MainLoop.scala:98)
at sbt.MainLoop$$anonfun$$anonfun$apply.apply(MainLoop.scala:98)
at sbt.State$$anon.process(State.scala:184)
at sbt.MainLoop$$anonfun.apply(MainLoop.scala:98)
at sbt.MainLoop$$anonfun.apply(MainLoop.scala:98)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
at sbt.MainLoop$.next(MainLoop.scala:98)
at sbt.MainLoop$.run(MainLoop.scala:91)
at sbt.MainLoop$$anonfun$runWithNewLog.apply(MainLoop.scala:70)
at sbt.MainLoop$$anonfun$runWithNewLog.apply(MainLoop.scala:65)
at sbt.Using.apply(Using.scala:24)
at sbt.MainLoop$.runWithNewLog(MainLoop.scala:65)
at sbt.MainLoop$.runAndClearLast(MainLoop.scala:48)
at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:32)
at sbt.MainLoop$.runLogged(MainLoop.scala:24)
at sbt.StandardMain$.runManaged(Main.scala:53)
at sbt.xMain.run(Main.scala:28)
at xsbt.boot.Launch$$anonfun$run.apply(Launch.scala:57)
at xsbt.boot.Launch$.withContextLoader(Launch.scala:77)
at xsbt.boot.Launch$.run(Launch.scala:57)
at xsbt.boot.Launch$$anonfun$explicit.apply(Launch.scala:45)
at xsbt.boot.Launch$.launch(Launch.scala:65)
at xsbt.boot.Launch$.apply(Launch.scala:16)
at xsbt.boot.Boot$.runImpl(Boot.scala:32)
at xsbt.boot.Boot$.main(Boot.scala:21)
at xsbt.boot.Boot.main(Boot.scala)
[error] sbt.compiler.EvalException: Type error in expression
[error] Use 'last' for the full log.
enablePlugins
在 sbt.Project
中不可用,直到 sbt 0.13.5.
要升级,请在 project/build.properties
中执行以下操作:
sbt.version=0.13.5
不要忘记停止 sbt
并重新开始(否则将无法识别版本更改)。
对于 Play 2.2.x 项目,您将替换
lazy val root = (project in file(".")).enablePlugins(play.PlayScala)
和
play.Project.playScalaSettings
我很确定 Play 2.2.x 使用的 Akka (2.2.x) 版本与您正在使用的版本 (2.3.8) 不兼容。您可能会考虑只使用最新的 Play 2.3.7。如果你选择这条路线,你还需要升级到 sbt 0.13.5(甚至是最新的 0.13.7)。