5

如果您按照官方 Scala 3 站点(如DottyScala Lang )上的步骤进行操作,那么它建议使用 Coursier 安装 Scala 3。问题是这些都没有解释如何在遵循这些步骤后运行已编译的 Scala 3 应用程序。

斯卡拉 2:

> cs install scala
> scalac HelloScala2.scala
> scala HelloScala2
Hello, Scala 2!

斯卡拉 3:

> cs install scala3-compiler
> scala3-compiler HelloScala3.scala

现在如何使用 Scala 3 运行编译后的应用程序?

4

3 回答 3

4

目前似乎没有办法使用 coursier 为 Scala 3 启动运行器,请参阅此问题。作为一种解决方法,您可以从github 发布页面安装二进制文件。一直向下滚动通过贡献列表以查看 .zip 文件并将其下载并解压缩到某个本地文件夹。然后将解压后的 bin 目录放在你的路径上。重新启动后,您将在终端中获得scala命令(等)。scalac

另一种解决方法是java通过以下命令直接将运行器与来自 coursier 的类路径一起使用:

java -cp $(cs fetch -p org.scala-lang:scala3-library_3:3.0.0):. myMain

替换myMain为您的@main def函数的名称。如果它在一个包裹里myPack,你需要说myPack.myMain(像往常一样)。

于 2021-06-23T10:44:10.037 回答
2

最后,似乎可以scala3在 Coursier 中使用类似 scala 2 版本的 scala 应用程序:

cs install scala3

然后,您可以使用以下命令编译scala3-compiler并运行scala3

scala3-compiler Main.scala
scala3 Main.scala
于 2021-09-25T12:44:21.833 回答
1

这种解决方法似乎对我有用:

cs launch scala3-repl:3+ -M dotty.tools.MainGenericRunner -- YourScala3File.scala

这样,您甚至不必先编译源代码。

如果您的源代码依赖于第三方库,您可以像这样指定依赖项:

cs launch scala3-repl:3+ -M dotty.tools.MainGenericRunner -- -classpath \
    $(cs fetch --classpath io.circe:circe-generic_3:0.14.1):. \
    YourScala3File.scala

fetch这将是一个使用 Scala 3 编译的 circe 库的示例。您应该能够使用子命令指定多个第三方库。

于 2021-09-20T16:04:17.877 回答