嵌入式Scala REPL继承父类路径

Kip*_*ros 8 scala

正如Scala邮件列表中的这个帖子所要求的那样,我如何创建一个继承父程序类路径的嵌入式Scala REPL?假设父Scala程序是使用启动的scala -cp <classpath> ...; 可以<classpath>作为字符串访问并用于初始化嵌入的REPL?(可用的Java类路径System.getProperty("java.class.path")似乎与Scala类路径不同.)

或者,也许嵌入式Scala REPL可以从父进程继承或构造其ClassLoader(MichaelDürig的ScalaDays 2010谈话可能是相关的).这是推荐的方法吗?

Eug*_*ota 6

我正在尝试做同样的事情,我只是通过谷歌搜索找到了一个方法:

lazy val urls = java.lang.Thread.currentThread.getContextClassLoader match {
  case cl: java.net.URLClassLoader => cl.getURLs.toList
  case _ => error("classloader is not a URLClassLoader")
}
lazy val classpath = urls map {_.toString}
Run Code Online (Sandbox Code Playgroud)

上面的代码为您提供当前上下文中的类路径.

settings.classpath.value = classpath.distinct.mkString(java.io.File.pathSeparator)
Run Code Online (Sandbox Code Playgroud)

把它放到你的settings.classpath,你应该能够启动调度或你需要的任何库.