使jar文件可用于scala REPL

使jar文件可用于scala REPL,scala,classpath,read-eval-print-loop,artifact,Scala,Classpath,Read Eval Print Loop,Artifact,我似乎无法实现这一点,因此我尝试了可能是最简单的情况——即检索jar文件并将其放入给定目录,然后从该目录启动scala REPL——仍然没有成功 我知道jar文件是良好且正确的引用(例如,我可以通过eclipse/scala ide从项目目录访问它们) 我还知道我的导入语句(如下所示)是有效的 cd ~/my_scala_jars 从maven repo中检索工件 启动scala REPL并将jar添加到REPL类路径: scala-cp scalaz-core_2.12.0-M1-7.1.2

我似乎无法实现这一点,因此我尝试了可能是最简单的情况——即检索jar文件并将其放入给定目录,然后从该目录启动scala REPL——仍然没有成功

我知道jar文件是良好且正确的引用(例如,我可以通过eclipse/scala ide从项目目录访问它们)

我还知道我的导入语句(如下所示)是有效的

cd ~/my_scala_jars
从maven repo中检索工件

启动scala REPL并将jar添加到REPL类路径:

scala-cp scalaz-core_2.12.0-M1-7.1.2.jar
scala>导入scalaz.stream.io
:7:错误:对象流不是包scalaz的成员
导入scalaz.stream.io
如果它有用的话,用不同的JAR(我下载的,正如我在上面用scalaz演示的那样)尝试此操作有时会导致REPL抛出一个not found错误

scala> import breeze.linalg._ 
<console>:7: error: not found: value breeze
    import breeze.linalg._
scala>import breeze.linalg.\u
:7:错误:未找到:值
进口微风_

在我看来,REPL应该识别这些JAR,因为目录已经添加到我的类路径中,而且我认为当前目录也添加到了类路径中(至少在REPL会话期间)——但两者仍然失败

我不确定为什么没有拾取jar文件,因为我还没有真正尝试过这样做。我所做的并且发现很有用的是,为特定目的创建大量
build.sbt
文件,例如,在REPL上使用特定的库套件

如果执行此操作,然后使用命令
sbt console
,从包含相应
build.sbt
的目录中启动REPL,则可以在该控制台的类路径上拥有一个包含所需库的控制台


这可能不太理想,但它确实有效,我发现它非常有用。

我不知道具体问题的答案,但如果您创建了一个build.sbt,它引用了您想要的可用库,您只需从build.sbt目录下的sbt控制台启动scala REPL,一切都会很好。我有一些build.sbt文件,我只是用它们来启动REPLs,并提供我想要的库。@MikeCurry我现在就是这样做的,但我正在尝试在scala文档中这样做(显然允许动态更新类路径)。无论如何,如果你把你的评论作为一个答案,我会接受并投票。谢谢,我添加了答案。对不起,没有更多的帮助
scala -cp scalaz-core_2.12.0-M1-7.1.2.jar

scala> import scalaz.stream.io
<console>:7: error: object stream is not a member of package scalaz
   import scalaz.stream.io
scala> import breeze.linalg._ 
<console>:7: error: not found: value breeze
    import breeze.linalg._