gpt4 book ai didi

scala - 如何有效地多次运行 Scala 程序?

转载 作者:行者123 更新时间:2023-12-01 10:19:56 25 4
gpt4 key购买 nike

我有一个用 sbt 构建的 Scala 程序,我想用来自另一个程序(用 rust 编写)的不同参数多次运行它。

我可以打电话sbt run [arg]每次,但这很慢。通常人们会使用 sbt shell 并调用 run [arg]多次,但我不知道这是否或如何从脚本中工作。此外,我想检索我的程序的输出,不包括 sbt 的输出。

我尝试使用 sbt packagescala program.jar ,但问题是我没有这样的 scala安装了二进制文件,无论如何,我想使用 sbt 下载的本地 scala 版本,而不是系统全局版本。我不知道如何运行我的 program.jar使用这个本地 Scala 版本。

我还考虑将我的 scala 程序作为我的 rust 程序的子进程运行,通过 stdin 和 stdout 或其他一些方式进行多次通信。

在提供输入和检索输出的同时多次运行我的 scala 程序的干净有效的方法是什么?

最佳答案

命令 sbt run仅用于开发目的。要运行您的应用程序,您需要将其打包到 jar .

你可以用 sbt package 创建 jar但创建的 jar 不会包含任何外部依赖项。您需要将它们手动添加到类路径。所以你需要用 -cp 运行你的 jar 参数并指定所有 jars您想要使用(包括您的项目 jar )并为您的主类提供完全限定的名称:

java -cp yourprojectname.jar:external.jar:anotherexternal.jar:. your.package.Main <your args>

正如 Travis 所写,更简单的方法是创建一个可运行的 jar,其中包含所有依赖项。您可以通过 sbt-assembly 轻松完成插入。

只需添加 addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.9")在文件中 project/assembly.sbt在您的项目目录中,然后运行 ​​ sbt assembly .
target/scala_X.X.X目录将出现名称为 projectname-assembly-X.X.X.jar 的文件,然后您可以运行:
java -jar projectname-assembly-X.X.X.jar <your args>

关于scala - 如何有效地多次运行 Scala 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55832596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com