Ошибка импорта scala.tools.reflect.ToolBox в SBT - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь скомпилировать следующий код в SBT как часть подпроекта.

package bitstream.compiler
package eval

import scala.reflect.runtime.universe._
import scala.reflect.runtime.currentMirror
import scala.tools.reflect.ToolBox

// Based on code from:
// https://gist.github.com/xuwei-k/9ba39fe22f120cb098f4
object Eval {

  def apply[A](tree: Tree): A = {
    val toolbox = currentMirror.mkToolBox()
    toolbox.eval(tree).asInstanceOf[A]
  }

}

Вот мой build.sbt:

lazy val commonSettings = Seq(
  organization := "com.bitbucket.example-project",
  scalaVersion := "2.12.6"
)

lazy val root = (project in file("."))
  .settings(
    commonSettings,
    version := "0.1.0-SNAPSHOT",
    name := "example-project"
  )

lazy val plugin = (project in file("plugin"))
  .settings(
    commonSettings,
    scalacOptions += "-J-Xss256m",
    name := "plugin",
    libraryDependencies += "org.scala-lang" % "scala-compiler" % scalaVersion.value
  )
  .dependsOn(root)

libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % Test
libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value

Я пытаюсь скомпилировать подпроект plugin, используя plugin/package, и получаю ошибку object tools is not a member of package scala. Насколько я знаю, scala.tools должно быть обеспечено зависимостью scala-compiler. Что-то мне не хватает?

1 Ответ

0 голосов
/ 17 сентября 2018

scala.tools.reflect.ToolBox находится в scala-compiler.jar.Попробуйте libraryDependencies += "org.scala-lang" % "scala-compiler" % scalaVersion.value.Sbt не предполагает, что вы будете использовать классы в scala-compiler.jar напрямую.- это задокументировано в https://www.scala -sbt.org / 1.0 / docs / Configuring-Scala.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...