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

Veg*_*ard 8 compiler-construction jvm scala

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

Pet*_*ikh 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


Sea*_*lly 5

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