为什么下面的代码默认情况下可以在解释器中工作,但是在sbt项目的情况下需要显式导入依赖项?
Welcome to Scala 2.12.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_144).
Type in expressions for evaluation. Or try :help.
scala> import scala.reflect.runtime._
import scala.reflect.runtime._
vs
sbt run
抛出
object runtime is not a member of package reflect
无
libraryDependencies += "org.scala-lang" % "scala-reflect" % "2.12.3"
在build.sbt
答案 0 :(得分:2)
因为REPL依赖于scala-compiler
,而依赖于scala-reflect
,所以不将它们放入代码的类路径中将不会节省任何内容。
答案 1 :(得分:1)
例如,发生类似情况
import scala.util.parsing.combinator._
无需任何辅助操作即可将其导入REPL中,但需要在sbt项目中添加依赖项。
原因是当REPL启动时,它将lib目录中的所有jar添加到类路径(Windows中为scala.bat)
set _TOOL_CLASSPATH=
if "%_TOOL_CLASSPATH%"=="" (
for %%f in ("!_SCALA_HOME!\lib\*.jar") do call :add_cpath "%%f"
for /d %%f in ("!_SCALA_HOME!\lib\*") do call :add_cpath "%%f"
)
!_ SCALA_HOME!\ lib \
中包含以下罐子..
jline-2.14.4.jar
scala-compiler.jar
scala-library.jar
scala-parser-combinators_2.12-1.0.6.jar
scala-reflect.jar
scala-swing_2.12-2.0.0.jar
scala-xml_2.12-1.0.6.jar
scalap-2.12.3.jar