Scala 程序可以编译为在任何 JVM 上运行,而无需在给定机器上安装 Scala 吗?

问题描述 投票:0回答:3

如果我编写了一个 Scala 程序,我可以以某种方式编译它,以便任何拥有标准 Sun Java JVM 的人都可以运行它吗?我想 Scala 编译器必须在编译的项目中包含 Scala 特定的 API 代码?我感兴趣的原因是,我们的课堂项目通常可以用人们喜欢的任何语言交付,但对交付进行评分的助教通常希望在自己的机器或实验室机器上运行代码。

scala jvm
3个回答
22
投票

您无需执行任何特殊操作即可在 JVM 上运行已编译的 Scala 程序。它只是普通的 JVM 字节码。您唯一需要做的就是确保标准 Scala 库 (scala-library.jar) 在运行时包含在您的类路径中。这只是额外的依赖项(或者如果您为 GUI 使用 Swing 包装器,则可能还需要 scala-swing.jar)。

如果您担心用户的方便性,您甚至可以将应用程序打包到单个 jar 中,以便它包含 scala-library.jar 的内容以及您自己的类和资源。但就我个人而言,只有当这个 jar 可执行时(可以作为 java -jar yourApplication.jar 运行),我才会这样做。

有关 Scala 库的注释:

  1. 它提供的正是这个——图书馆。没有解释器,没有编译器或某种特殊的执行环境;所以你不必担心类加载问题。
  2. 它应该与您在编译程序期间使用的 Scala 版本匹配(2.7 和 2.8 的 Scala 库不可互换)。
  3. 它可以在您的 Scala 发行版中找到:lib/scala-library.jar

5
投票

是的。如果在类路径中包含适当的 scala 库 jar 文件,则可以使用 java 运行 scala 程序,因为编译后的 scala 代码与编译后的 java 代码相同。


1
投票

如果您曾经使用过任何 Java 库,请像对待它们一样对待 Scala。获取 Scala 的 jar(库之一),然后使用可用的程序之一将其与您的 jar 打包在一起,或者将其一起分发。

© www.soinside.com 2019 - 2024. All rights reserved.