将多个类路径项添加到Scala REPL类路径

4

:cp 似乎只接受单个条目

scala> :cp /usr/lib/hadoop/*:/usr/lib/hadoop/lib/*:/usr/lib/hbase/*:/usr/lib/hbase/lib/*:
/home/sboesch/spark-master/lib_managed/jars/*:/home/sboesch/spark-master/lib_managed/bundles/*:

The path '/usr/lib/hadoop/*:/usr/lib/hadoop/lib/*:/usr/lib/hbase/*:/usr/lib/hbase/lib/*:/home/sboesch/spark-master/lib_managed/jars/*:/home/sboesch/spark-master/lib_managed/bundles/*:' 
doesn't seem to exist.

有想法如何在已经在REPL中时进行此操作。 是的,我知道如何在REPL外部设置它:

CLASSPATH=/usr/lib/hadoop/*:/usr/lib/hadoop/lib/*:/usr/lib/hbase/*:/usr/lib/hbase/lib/*
:/home/sboesch/spark-master/lib_managed/jars/*:
/home/sboesch/spark-master/lib_managed/bundles/*:  scala 

编辑 看起来意图不是很清楚。我正在REPL中编写代码。然后有一个新的代码片段需要几个类路径条目。这只是一次性的事情:因此,我不想添加到build.sbt或scala/lib dir等中。我没有得到任何真正满足这种用例的答案,但仍然奖励最佳努力。


我非常确定最近版本中的 :cp 已经损坏并等待修复。供您参考。但这是一个显而易见的用例。 - som-snytt
3个回答

3

现在,scala -cp "path1:path2"似乎可以正常工作了。

scala -version 拾取_JAVA_OPTIONS: -Xms512m -Xmx4096m -XX:MaxPermSize=1024m -XX:ReservedCodeCacheSize=128m Java HotSpot(TM) 64-Bit Server VM 警告:忽略MaxPermSize=1024m选项;支持 在8.0中已经被移除了。 Scala代码运行器版本2.11.8版权所有 2002-2016,LAMP/EPFL


2

:cp的说明文本如下:

:cp <path>               add a jar or directory to the classpath

我猜你没有确切的方法来获取它。我会使用以下方法:

:load <path>             interpret lines in a file

我确认它适用于REPL命令以及Scala代码。

附加说明:

如果您使用SBT,则所有项目依赖项都在由SBT的console任务启动的REPL的类路径中。


很遗憾,我们在这里依赖外部文件。我会等待看看是否有其他解决方案。 - WestCoastProjects
我不明白你所说的“外部文件”是什么意思,也不明白为什么它们会使:load不适用。 - Randall Schulz
设置外部构件 - 包括文件 - 与答案的意图不符。但无论如何,我很感激您的输入,会给您点赞。 - WestCoastProjects
谢谢。但是每次在 REPL 中键入或复制粘贴类路径真的更容易吗?我在我的答案中添加了一种替代方法。 - Randall Schulz
我更新了原帖,因为似乎意图不够清晰。 - WestCoastProjects

1

一种快速而简单的方法是将一个链接从 $SCALA_HOME/lib/ 添加到一个包含其他 jar 文件的文件夹中。然后在 REPL 中,您可以导入所需的软件包。


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