使用sbt从代码中启动scala repl循环

4
我正在尝试启动一个Scala REPL循环(使用breakif),并且我正在从SBT构建/运行,我已经尝试遵循常见问题解答中的建议,但是无法使其工作。
请问有人能提供一个MyType的示例,用于配置设置,如下所述,“MyType是代表类,应包含在解释器的类路径和应用程序类加载器中”?
链接:https://github.com/harrah/xsbt/wiki/FAQ(在“如何在我的代码中使用Scala解释器?”下)。
使用Scala 2.9.1和SBT 0.11。
谢谢。

你能链接到你引用的东西吗,特别是'MyType'。 - 0__
1个回答

1

常见问题解答链接到背景讨论,展示了MyType的实际使用方法。

用法:

val settings = new Settings()
settings.embeddedDefaults[MyType]

SBT内部:

def embeddedDefaults[T: Manifest] {
  val loader = implicitly[Manifest[T]].erasure.getClassLoader
  explicitParentLoader = Some(loader) // for the Interpreter parentClassLoader
  getClasspath("app", loader) foreach { classpath.value = _ }
  getClasspath("boot", loader) foreach {
     bootclasspath.value = settings.bootclasspath.value + File.separator + _
  }
}

MyType 只是用来帮助 SBT 找到适当的类加载器。可以选择将 MyType 设为项目中想要从解释器中使用的任意类。这基本上就是 FAQ 中所说的意思:MyType 是一个代表性类,应该包含在解释器的类路径和应用程序类加载器中


这适用于常规的SBT项目,但在xsbt-web-plugin项目中无法工作。 - GhostM
@GhostM,抱歉,我不熟悉xsbt-web-plugin。你可能会在SBT邮件列表上得到更好的回复。一旦你弄清楚了,请在这里发布你的答案,并考虑更新SBT维基。 - Kipton Barros

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接