正如Scala邮件列表中的这个帖子所要求的那样,我如何创建一个继承父程序类路径的嵌入式Scala REPL?假设父Scala程序是使用启动的scala -cp <classpath> ...
; 可以<classpath>
作为字符串访问并用于初始化嵌入的REPL?(可用的Java类路径System.getProperty("java.class.path")
似乎与Scala类路径不同.)
或者,也许嵌入式Scala REPL可以从父进程继承或构造其ClassLoader(MichaelDürig的ScalaDays 2010谈话可能是相关的).这是推荐的方法吗?
我正在尝试做同样的事情,我只是通过谷歌搜索找到了一个方法:
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
,你应该能够启动调度或你需要的任何库.