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

时间:2009-12-12 15:12:57

标签: compiler-construction scala jvm

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

3 个答案:

答案 0 :(得分:21)

在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

答案 1 :(得分:5)

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

答案 2 :(得分:1)

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