在SBT中导入scala.tools.reflect.ToolBox时出错

时间:2018-09-16 16:29:52

标签: scala sbt

我正在尝试将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 :(得分:1)

myHour=replace(Time,Right(Time,9),"") 'get only the hour from time myAMPM=replace(Time,Time,Right(Time,2)) 'get only AM or PM from time If InStr(1,myHour,12,1) > 0 AND InStr(1,myAMPM,"AM",1) > 0 Then wscript.echo "True" Else wscript.echo "False" End If 在scala-compiler.jar中。尝试scala.tools.reflect.ToolBox。 Sbt不假定您将直接在scala-compiler.jar中使用类。 -已记录在https://www.scala-sbt.org/1.0/docs/Configuring-Scala.html