这通常不被推荐,因为大多数 jar 库都是用于与程序员项目一起使用的。此外,与其他生态系统不同,jar 库通常通过某些用户模式库管理工具(如 ivy、maven 或 sbt)进行安装,您可能已经注意到了。
如果您真的想这样做,可以将 jar 安装到 Scala 的 TOOL_CLASSPATH 位置,您可以从随 Scala 发行版捆绑的 scala.bat 或 scala shell 脚本文件中找到它。或者,您可以构建自己的自定义 Scala REPL,它可以从某个配置的位置加载全局可安装的库。无论哪种方式,都需要对 TOOL_CLASSPATH 进行 futzing。
P.S: 我目前无法访问实际的scala.bat
文件来帮助您解决此问题,但您可以在这里和这里查找以了解我的意思。请注意,这些文件可能不会显示.bat文件的结构,因为它们在分发中(可能相当过时)。请在官方分发中查找信息。
编辑
现在我回来了,看了一下官方分发包含的实际的scala批处理和shell脚本,我可以解释得更详细一些:-)
像我上面说的那样,scala
脚本加载其TOOL_CLASSPATH
文件夹中存在的所有jar文件,通常为${SCALA_HOME}/lib
。 它还提供了使用有前途的-toolcp
选项添加到TOOL_CLASSPATH
的功能-让我们看看它显示了什么:(批处理脚本类似-我将只展示scala
shell脚本中的内容)
while [[ $# -gt 0 ]]; do
case "$1" in
-D*)
java_args=("${java_args[@]}" "$1")
scala_args=("${scala_args[@]}" "$1")
shift
;;
-J*)
java_args=("${java_args[@]}" "${1:2}")
scala_args=("${scala_args[@]}" "$1")
shift
;;
-toolcp)
TOOL_CLASSPATH="${TOOL_CLASSPATH}${SEP}${2}"
shift 2
;;
-nobootcp)
unset usebootcp
shift
;;
-usebootcp)
usebootcp="true"
shift
;;
-debug)
SCALA_RUNNER_DEBUG=1
shift
;;
*)
scala_args=("${scala_args[@]}" "$1")
shift
;;
esac
done
如您所见,这样做非常有限 - 您必须指定每个要添加的jar。您可以使用-cp!我们能否使它更好?当然,我们必须在toolcp中进行一些操作。
addtoToolCP() {
for i in $(find $1 -name "*.jar")
do
if [[ -z "$TOOLCP" ]]
then
TOOLCP="$i"
else
TOOLCP="${TOOLCP}:$i"
fi
done
}
因此,您可以检查我们的
TOOLCP
参数是否为空,并相应地调用
scala
,如
scala -toolcp $TOOLCP
如果非空。现在,您可以像这样调用您的shell脚本:
myscalascript <list-of-paths-to-be-added-to-toolcp>
。或者您可以只保留一个文件夹并继续向其中添加新库。希望这可以帮助 - 正如其他人所说,请注意二进制兼容性问题。二进制不兼容问题只会影响主要的Scala版本,次要版本应该是完全兼容的。最后,为了避免重复自己到死,仅在您确定要使用此选项时使用它。 :-)