导入scala.reflect.runtime

导入scala.reflect.runtime,scala,Scala,为什么下面的代码默认在解释器中工作,但在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运行抛出 ob

为什么下面的代码默认在解释器中工作,但在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运行
抛出

object runtime is not a member of package reflect
没有

libraryDependencies += "org.scala-lang" % "scala-reflect" % "2.12.3"

在build.sbt中

因为REPL依赖于依赖于
scala reflect的
scala编译器
,所以不将它们放入代码的类路径不会保存任何内容。

因为REPL依赖于依赖于
scala reflect的
scala编译器
,因此,不将它们放入代码的类路径不会保存任何内容。

例如,类似的情况也会发生

import scala.util.parsing.combinator._
它可以在REPL中导入,无需任何辅助操作,但需要在sbt项目中添加依赖项

原因是当REPL启动时,它会将lib目录中的所有JAR添加到类路径中(Windows中的scala.bat)

还有下面的罐子在里面_SCALA_回家\解放党\

..
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

例如,类似的情况也会发生

import scala.util.parsing.combinator._
它可以在REPL中导入,无需任何辅助操作,但需要在sbt项目中添加依赖项

原因是当REPL启动时,它会将lib目录中的所有JAR添加到类路径中(Windows中的scala.bat)

还有下面的罐子在里面_SCALA_回家\解放党\

..
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

我同意这令人困惑。如果REPL有一个“导出”函数来导出sbt项目,那就太好了。@Alexey,“REPL依赖于scala编译器,而scala编译器依赖于scala reflect”-您能给我指一些描述这一点的文档吗?此外,根据文档“scala和java.lang包以及对象Predef默认导入。”和“reflect.runtime”是scala的一部分。*-不是吗?@DrYWit 1。scala编译器的文档取决于scala reflect?您可以在的依赖项中看到它。或者对于需要编译代码的REPL?“这似乎有点明显,但是”DrYWit 2<默认情况下导入的代码>scala
仅意味着您可以使用
导入reflect.runtime.\u
而不是
导入scala.reflect.runtime.\u
。这并不意味着此包中存在任何内容:您还可以使用
导入不存在的包
,Scala将查找
Scala.nonexistingPackage
java.lang.nonexistingPackage
@DrYWit OTOH,如果您指的是默认情况下REPL类路径中的文档,我认为它不存在,您可能希望在上报告它。同意这是令人困惑的。如果REPL有一个“导出”函数来导出sbt项目,那就太好了。@Alexey,“REPL依赖于scala编译器,而scala编译器依赖于scala reflect”-您能给我指一些描述这一点的文档吗?此外,根据文档“scala和java.lang包以及对象Predef默认导入。”和“reflect.runtime”是scala的一部分。*-不是吗?@DrYWit 1。scala编译器的文档取决于scala reflect?您可以在的依赖项中看到它。或者对于需要编译代码的REPL?“这似乎有点明显,但是”DrYWit 2<默认情况下导入的代码>scala
仅意味着您可以使用
导入reflect.runtime.\u
而不是
导入scala.reflect.runtime.\u
。这并不意味着此包中存在任何内容:您还可以使用
导入不存在的包
,Scala将查找
Scala.nonexistingPackage
java.lang.nonexistingPackage
@DrYWit OTOH,如果您指的是默认情况下REPL类路径中的文档,我认为它不存在,您可能希望在上报告它。