无法扩展由以前版本的Scala编译的宏(scala 2.11.4,sbt 0.13.7,JDK 8)

我正在将项目转换为Scala 2.11.4和sbt 0.13.7。 我遇到了很多错误,其中一些是:

can't expand macros compiled by previous versions of Scala [error] preloadDevice <<= preloadDeviceTask 

对于此代码:

 lazy val settings: Seq[Setting[_]] = inConfig(Android) (Seq( // Preload Scala on the device/emulator preloadDevice <<= preloadDeviceTask, preloadEmulator <<= InputTask( (sdkPath)(AndroidProject.installedAvds(_)))(preloadEmulatorTask), // Uninstall previously preloaded Scala unloadDevice <<= unloadDeviceTask, unloadEmulator <<= InputTask( (sdkPath)(AndroidProject.installedAvds(_)))(unloadEmulatorTask) )) 

我如何解决它?

更新:

JDK 8

从这里: 为什么Def.inputTask宏在Scala 2.11.1中不起作用?

在build.sbt文件中,请确保scalaVersion:=“2.10.4”而不是像scalaVersion:=“2.11.x”

如果使用JDK 8,则对Scala 2.10.x编译的Sbt 0.13.x没有太多选项:

  • 仅使用JDK7作为sbt(通过在运行脚本中为sbt设置特定的JAVA_HOME) – 您的项目仍将针对JDK8进行编译
  • 尝试JDK8 + Scala-2.10为sbt(它可能工作但当然没有保证)
  • 自己构建对JDK8 的 sbt 0.13